Проверьте, поддерживает ли ваш движок регулярных выражений \R
как класс сокращенных символов, и вам не нужно беспокоиться о различных комбинациях перевода строки / перевода строки Unicode.Если все реализовано правильно, вы можете прозрачно сопоставить все различные окончания строк ascii или Unicode, используя \R
В Unicode вам нужно обнаружить NEL
(конец строки OS / 390, \ x85) LS
(разделитель строк, \ x2028) и PS
(разделитель абзацев, \ x2029), если вы хотитебыть полностью кроссплатформенным в эти дни.
1009 * Это спорно ли LS, NEL, и PS следует рассматривать как разрыв строки, строки окончания или белое пространство.Стандарт XML 1.0, например,
не распознает NEL как символ перевода строки.ECMAScript обрабатывает
LS
и
PS
как разрывы строк, но
NEL
как пробелы.
Perl Unicode регулярные выражения будут рассматривать
VT
,
FF
,
CR
,
CRLF
,
NEL
,
LS
и
PS
как разрывы строк с целью
^
и
$
регулярных выражений мета-символов.
Руководство по внедрению Unicode (раздел 5.8 и таблица 5.3), вероятно, является лучшим выбором для окончательного определения того, что такое "новая строка".
Если вас интересует только ascii с классическими вариантами DOS / Windows / Unix / Mac, регулярное выражение, эквивалентное \R
, равно (?>\r\n|[\r\n])
В Unicode, эквивалентно \R
is (?>\r\n|\n|\x0b|\f|\r|\x85|\x2028|\x2029)
В \x0b
есть вертикальная вкладка;еще раз, это может соответствовать или не соответствовать вашему определению, что такое разрыв строки, но это соответствует рекомендации имплантации Unicode.(FF
, или \x0C
не включено в регулярное выражение, поскольку Фид новостей - это новая страница, а не новая строка в определении.)