Lors de la rédaction de cette réponse , je devais correspondre exclusivement aux sauts de ligne au lieu d'utiliser le s
-flag ( dotall
- le point correspond aux sauts de ligne).
Les sites généralement utilisés pour tester les expressions régulières se comportent différemment lors de la tentative de correspondance sur \n
ou \r\n
.
j'ai remarqué
Regex101 correspond aux sauts de ligne uniquement sur
\n
( exemple - supprimer\r
et cela correspond)RegExr ne correspond aux sauts de ligne ni sur
\n
ni sur\r\n
et je ne trouve pas quelque chose pour le faire correspondre à un saut de ligne, sauf pour lem
-flag et\s
( exemple )Debuggex se comporte encore plus différemment:
dans cet exemple, il ne correspond qu'à on\r\n
, alors
qu'ici il ne correspond qu'à on\n
, avec les mêmes indicateurs et moteur spécifiés
Je suis pleinement conscient du m
-flag (multiligne - fait ^
correspondre le début et $
la fin d'une ligne), mais parfois ce n'est pas une option. Idem avec \s
, car il correspond également aux tabulations et aux espaces.
Ma pensée d'utiliser le caractère de nouvelle ligne unicode ( \u0085
) n'a pas abouti, donc:
- Existe-t-il un moyen sûr d'intégrer la correspondance sur un saut de ligne (de préférence quelle que soit la langue utilisée) dans une expression régulière?
- Pourquoi les sites mentionnés ci-dessus se comportent-ils différemment (en particulier Debuggex, correspondant une seule
\n
fois et une seule fois\r\n
)?
\r?\n
faire correspondre les deux \r\n
et les \n
séquences de terminaison de ligne. Cela ne fonctionne pas pour l'ancienne \r
syntaxe Mac, mais celle-ci est assez rare de nos jours.
[\r\n]+
- ou quelque chose comme ça