Por que o mecanismo regex escolhe corresponder ao padrão `..X` a partir de` .X | ..X | X`?

Eu tenho uma corda

1234X5678

e eu uso esse regex para corresponder ao padrão

.X|..X|X.

Eu tenho

34X

A questão é por que eu não recebi4X ouX5?

Por que regex optar por executar o segundo padrão?