Регулярное выражение - Найти все одиночные переносы строки и добавить начало строки

Помогите составить регулярное выражение которое будет: искать в тексте одиночные переносы строки (\r или \x0d) и заменять его на \r\n или \x0d\x0a Но загвоздка в том, что нужно исключить из поиска перенос за которым идет новая строка.

Ну или на примере слов: ASSIGN SESSION SMIRNOFF нужно найти только буквы S за которым не идет буква I


Ответы (1 шт):

Автор решения: Alex R.

Необходимо использовать опережающую проверку.

Статья на хабре об этих проверках.

Look-behind — ретроспективная проверка «смотрит» назад. Look-ahead — опережающая проверка «смотрит» вперед.

Синтаксис:

(?<=pattern) положительное look-behind условие
(?<!pattern) отрицательное look-behind условие
(?=pattern)  положительное look-ahead  условие
(?!pattern)  отрицательное look-ahead  условие

Для строки "ASSIGN SESSION SMIRNOFF" решение будет

S(?!I)
→ Ссылка