Если вы не хотите заменять все символы новой строки Unicode, а только строки в стиле CRLF, используйте:
Что соответствует \R
По умолчанию последовательность \ R в шаблоне соответствует любой последовательности новой строки Unicode, независимо от того, что было выбрано в качестве конечной последовательности строки. Если вы укажете
--enable-bsr-anycrlf
значение по умолчанию изменено так, что \ R соответствует только CR, LF или CRLF. Все, что было выбрано при сборке PCRE, можно переопределить при вызове библиотечных функций.
Последовательности новой строки
Вне класса символов по умолчанию escape-последовательность \ R соответствует любой последовательности новой строки Unicode. В режиме, отличном от UTF-8, \ R эквивалентен следующему:
(?>\r\n|\n|\x0b|\f|\r|\x85)
Это пример «атомной группы», детали которой приведены ниже. Эта конкретная группа соответствует либо двухсимвольной последовательности CR, за которой следует LF, либо одному из одиночных символов LF (перевод строки, U + 000A), VT (вертикальная табуляция, U + 000B), FF (перевод страницы, U + 000C), CR. (возврат каретки, U + 000D) или NEL (следующая строка, U + 0085). Последовательность из двух символов рассматривается как единый блок, который нельзя разделить.
В режиме UTF-8 добавляются два дополнительных символа с кодовыми точками больше 255: LS (разделитель строк, U + 2028) и PS (разделитель абзацев, U + 2029). Для распознавания этих символов не требуется поддержка свойств символов Юникода.
Можно ограничить \ R совпадением только CR, LF или CRLF (вместо полного набора окончаний строк Unicode), установив параметр PCRE_BSR_ANYCRLF либо во время компиляции, либо при совпадении с шаблоном. (BSR - это аббревиатура от "обратной косой черты R".) Это можно сделать по умолчанию при построении PCRE; в этом случае другое поведение можно запросить с помощью параметра PCRE_BSR_UNICODE. Также можно указать эти параметры, начав строку шаблона с одной из следующих последовательностей:
(*BSR_ANYCRLF) CR, LF, or CRLF only
(*BSR_UNICODE) any Unicode newline sequence
Они отменяют значение по умолчанию и параметры, заданные для pcre_compile () или pcre_compile2 (), но они могут быть отменены параметрами, заданными для pcre_exec () или pcre_dfa_exec (). Обратите внимание, что эти специальные настройки, несовместимые с Perl, распознаются только в самом начале шаблона и должны быть в верхнем регистре. Если присутствует более одного из них, используется последний. Их можно комбинировать с изменением условного обозначения новой строки; например, узор может начинаться с:
(*ANY)(*BSR_ANYCRLF)
Их также можно комбинировать со специальными последовательностями (* UTF8) или (* UCP). Внутри класса символов \ R обрабатывается как нераспознанная escape-последовательность и поэтому по умолчанию соответствует букве «R», но вызывает ошибку, если установлен PCRE_EXTRA.