Enquanto escrevia esta resposta , tive que corresponder exclusivamente em quebras de linha em vez de usar o s
sinalizador -flag ( dotall
- ponto corresponde a quebras de linha).
Os sites geralmente usados para testar expressões regulares se comportam de maneira diferente ao tentar corresponder em \n
ou \r\n
.
Percebi
O Regex101 corresponde apenas a quebras de linha em
\n
( exemplo - excluir\r
e corresponde)RegExr corresponde quebras de linha nem em
\n
nem em\r\n
e eu não posso encontrar algo para torná-lo coincidir com uma quebra de linha, exceto para om
-flag e\s
( exemplo )Debuggex comporta-se ainda mais diferente:
em este exemplo ele corresponde apenas no\r\n
, enquanto
aqui só corresponde a\n
, com as mesmas bandeiras e motor especificados
Estou plenamente ciente do m
-flag (multiline - faz ^
coincidir com o início e $
o final de uma linha), mas às vezes isso não é uma opção. O mesmo \s
acontece com a correspondência de tabulações e espaços também.
Meu pensamento de usar o caractere de nova linha unicode ( \u0085
) não foi bem-sucedido, então:
- Existe uma maneira segura de integrar a correspondência em uma quebra de linha (de preferência independentemente do idioma usado) em uma expressão regular?
- Por que os sites mencionados acima se comportam de maneira diferente (especialmente o Debuggex, correspondendo apenas uma
\n
vez e apenas uma vez\r\n
)?
\r?\n
para combinar as seqüências de terminação \r\n
e de \n
linha. Não funciona para a \r
sintaxe antiga do Mac, mas essa é bastante rara atualmente.
[\r\n]+
- ou algo parecido com isto