Pisząc tę odpowiedź , musiałem dopasować wyłącznie na łamach linii zamiast używać opcji s-flag ( dotall- kropka odpowiada podziałom linii).
Witryny używane zwykle do testowania wyrażeń regularnych zachowują się inaczej, gdy próbują dopasować na \nlub \r\n.
Zauważyłem
Regex101 dopasowuje tylko podziały wierszy
\n
( przykład - usuń\ri pasuje)RegExr dopasowuje podziały linii ani włączone,
\nani włączone\r\n
i nie mogę znaleźć czegoś, co pasowałoby do podziału linii, z wyjątkiemm-flag i\s
( przykład )Debuggex zachowuje się jeszcze bardziej inaczej:
w tym przykładzie pasuje tylko do\r\n, podczas gdy
tutaj pasuje tylko do\n, z tymi samymi flagami i określonym silnikiem
W pełni zdaję sobie sprawę z opcji m-flag (multiline - ^dopasowuje początek i $koniec wiersza), ale czasami nie jest to opcja. To samo \sdotyczy również tabulatorów i spacji.
Moja myśl o użyciu znaku nowej linii Unicode ( \u0085) nie powiodła się, więc:
- Czy istnieje bezpieczny sposób zintegrowania dopasowania w miejscu zakończenia wiersza (najlepiej niezależnie od używanego języka) z wyrażeniem regularnym?
- Dlaczego wyżej wymienione strony zachowują się inaczej (zwłaszcza Debuggex, dopasowywanie tylko
\nraz i raz tylko\r\n)?
\r?\naby dopasować zarówno sekwencje zakończenia linii, jak \r\ni \nsekwencje zakończenia linii. Nie działa dla starej \rskładni Maca, ale ta jest obecnie dość rzadka.
[\r\n]+- lub coś takiego