При написании этого ответа мне приходилось сопоставлять исключительно sразрывы строк вместо использования -flag ( dotall- точка соответствует разрывам строк ).
Сайты, обычно используемые для проверки регулярных выражений, ведут себя по-разному при попытке сопоставления с \nили \r\n.
я отметил
Regex101 сопоставляет только разрывы строк
\n
( пример - удалить,\rи это соответствует)RegExr соответствует переносы строк ни на ,
\nни на ,\r\n
и я не могу найти что - то , чтобы сделать его соответствовать разрыв строки, за исключением тойm-flag и\s
( например )Debuggex ведет себя еще более по-разному:
в этом примере он совпадает только с\r\n, в то время как
здесь он только с\n, с теми же флагами и указанным движком
Я полностью осведомлен о mфлаге (многострочный - ^сопоставляет начало и $конец строки), но иногда это не вариант. То же самое с тем \s, что он также соответствует символам табуляции и пробелов.
Моя мысль использовать символ новой строки ( \u0085) в Юникоде не удалась, поэтому:
- Есть ли надежный способ интегрировать совпадение на разрыв строки (желательно независимо от используемого языка) в регулярное выражение?
- Почему вышеупомянутые сайты ведут себя по-разному (особенно Debuggex, сопоставляя только
\nодин раз и только один раз\r\n)?
\r?\nчтобы соответствовать обе последовательности \r\nи \nпоследовательности завершения строки. Это не работает для старого \rсинтаксиса Mac, но этот довольно редкий в наши дни.
[\r\n]+- или что-то вроде этого