Задать вопрос
@Shimpanze

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

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

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

Нужно найти:

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


НЕ нужно:

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


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

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

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

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

она не имеет четкой длины.
  • Вопрос задан
  • 197 просмотров
Подписаться 1 Средний 4 комментария
Решения вопроса 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) — проверяем, чтобы после найденного переноса строки не шел ещё один перенос строки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 160 000 до 250 000 ₽
BGStaff Москва
До 300 000 ₽
Greenway Global Новосибирск
от 150 000 до 250 000 ₽