Se você estiver interessado no que acontece quando você usa
| operador de alternância
, a resposta é fácil:o mecanismo regex processa a expressão e a string de entrada da esquerda para direita . Tomando o padrão que você tem como exemplo,
^.{8}|.{12}$|.{4} começa a inspecionar a string de entrada da esquerda e verifica se há ^.{8} - primeiros 8 caracteres. Encontra-os e é um jogo. Em seguida, continua e encontra os últimos 12 caracteres com .{12}$ , e novamente há uma correspondência. Em seguida, quaisquer cadeias de 4 caracteres são correspondidas.
Demonstração do Debuggex
Em seguida, você tem
^.{8}|.{4}|.{12}$ . A expressão é novamente analisada da esquerda para a direita, os primeiros 8 caracteres são correspondidos primeiro, mas em seguida, apenas sequências de 4 caracteres serão correspondidas, .{12} nunca será acionado porque haverá .{4} fósforos!
Demonstração do Debuggex