@Shimpanze

Как составить регулярное выражение?

Здравствуйте!

Необходимо найти перенос строки у всех строк, следующих друг за другом (без пустой строки между ними).

Нужно найти:

Строка один.↵    ← нужен вот этот перенос
Строка два.


НЕ нужно:

Строка один.↵    ← НЕ нужен вот этот перенос
↵                ← НЕ нужен вот этот перенос
Строка два.


Пишу регулярное выражение:

/(?<!(\r?\n|\r|\n))[\r?\n](?=<(\w))/miuU

...но оно не срабатывает, так как просмотр назад не может обработать вот эту конструкцию:

(\r?\n|\r|\n)

она не имеет четкой длины.
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
27cm
@27cm
TODO: Написать статус
/(?<=[^\r\n])\r?\n(?!\r?\n)/g
https://regex101.com/r/DwIs8r/1/

Чуть подробнее:
(?<=[^\r\n]) — смотрим, чтобы перед искомым переносом шел текст. В данном случае я довольно грубо считаю текстом всё кроме переносов строки, но это условие при желании можно уточнить.
\r?\n — сам искомый перенос строки. Не забываем про вариант CR+LF.
(?!\r?\n) — проверяем, чтобы после найденного переноса строки не шел ещё один перенос строки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы