Notepad++ соответствует концу строки в регулярном выражении

Я хочу преобразовать это

a

b


b

в это

a
b
b

количество пустых строк является переменным и может быть довольно большим. Пустые строки содержат пробелы. Я хочу использовать регулярное выражение, например \r\n( *\r\n)+, но notepad++, похоже, не любит эти специальные символы в регулярном выражении, пробовал также \\r\\n( *\\r\\n)+

Обратите внимание, что пустые строки могут содержать пробелы, поэтому правильное регулярное выражение должно выглядеть примерно так: \\r\\n( *\\r\\n)+


person Paolo    schedule 07.12.2011    source источник
comment
Я не знаю о Notepad ++, но обычно $ представляет собой начало строки, а ^ представляет собой конец строки...   -  person Ilya Kogan    schedule 07.12.2011
comment
возможный дубликат Поиск и замена регулярного выражения пустых строк в Notepad++   -  person stema    schedule 07.12.2011
comment
Илья, наоборот.   -  person Joey    schedule 07.12.2011
comment
Это невозможно напрямую с регулярным выражением в Блокноте, потому что регулярные выражения ограничены только одной строкой (новые строки удаляются механизмом регулярных выражений), но вы можете увидеть мой ответить здесь или, конечно, другие ответы на этот вопрос.   -  person stema    schedule 07.12.2011
comment
@stema очень близка к другому вопросу, но у меня также есть пробелы, и на другой вопрос тоже нет ответа на регулярное выражение.   -  person Paolo    schedule 07.12.2011
comment
@Paolo: Вы должны были упомянуть в своем первоначальном вопросе, что в этих пустых строках есть пробелы.   -  person BoltClock    schedule 07.12.2011
comment
@Paolo, для Notepad++ нет чистого ответа на этот вопрос с одним регулярным выражением   -  person stema    schedule 07.12.2011
comment
@BoltClock Да, пока я понимал, что это актуально, я упомянул об этом.   -  person Paolo    schedule 07.12.2011


Ответы (1)


Вы можете выполнить «заменить все» несколько раз на

\r\n\r\n -> \r\n

Это с выбранной опцией «Расширенный», а не «Регулярное выражение».

Если пустая строка содержит пробелы, то сначала замените все строки только пробелами без ничего, используя регулярное выражение: ^\s+$ -> ''. Тогда к расширенной замене выше.

В качестве альтернативы:

Вы также можете заменить все \r\n какой-либо последовательностью символов, которой нет в документе, например. ### затем используйте следующую замену регулярного выражения: '###(\s*###)+' -> '###' и, наконец, замените последовательность ('###') на \r\n.

person Petar Ivanov    schedule 07.12.2011
comment
На самом деле пустые строки содержат пробелы. - person Paolo; 07.12.2011
comment
Если \r\n(\r\n)+ не совпадает, то, скорее всего, \r\n\r\n тоже. - person Joey; 07.12.2011
comment
Замена пробелов ничем испортит все строки пробелами и еще что-то может быть ^\s+$ -> '' подойдет - person Paolo; 07.12.2011
comment
Совершенно невозможно сделать это за один проход; этот ответ является самым близким, который вы можете получить. - person BoltClock; 07.12.2011
comment
@Paolo с опцией регулярного выражения работает, я только что проверил. - person stema; 07.12.2011
comment
@Paolo: да, я забыл якоря. Теперь это исправлено. Спасибо! - person Petar Ivanov; 07.12.2011