При написании этого ответа мне приходилось сопоставлять исключительно 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]+
- или что-то вроде этого