Найти CRLF в Блокноте ++


316

Как мне найти / заменить все символы CR / LF в Notepad ++?

Я ищу что-то эквивалентное специальному символу ^ p в Microsoft Word.


Просто чтобы немного рассказать о том, что упоминал тогда-хакер. Мы используем ULtraEdit-32 на работе, и работая с файлами EDI (x.12), нам часто приходится переносить или разворачивать данные. 2 наиболее распространенные строки поиска и замены: «^ p» и «~». движение в одну сторону заменит "~" на CR / LF для более удобного чтения каждого сегмента. Переходя к другому пути, вы возвращаете файл обратно в формат, необходимый для транслятора EDI. Для таких ленивых, как я, у меня есть эти map'd для ключей для простоты использования.
DavidGrove

1
Хотя не связано, но полезно. Я посетил эту страницу после поиска метода для преобразования текстового файла UNIX в формат Windows в Windows. Это то, что я сделал и работал, CTRL+Hвыберите «Режим поиска: Регулярное выражение». «Найти что: $» и «Заменить на: \ r». Скопируйте, вставьте содержимое в Блокнот или сохраните его на диск.
Гуру

2
Ура! Notepad ++ 6.0 поддерживает PCRE: регулярные выражения, как [\r\n]+сейчас, работают. Я обновил свой ответ, и буду праздновать!
VonC

@VonC: я думаю, мне нужно обновить все мои ответы [notepad ++] :)
BoltClock

Ответы:


412

[\r\n]+ должно работать тоже

Обновление 26 марта 2012 года, дата выпуска Notepad ++ 6.0 :

О боже, это действительно работает сейчас !!!

PCRE регулярное выражение в Notepad ++


Оригинальный ответ 2008 (Блокнот ++ 4.x) - 2009-2010-2011 (Блокнот ++ 5.x)

На самом деле нет, похоже, не работает с регулярным выражением ...

Но если у вас Notepad ++ 5.x, вы можете использовать расширенный режим поиска и искать \r\n. Это находит все ваши CRLF.

(Я понимаю, что это тот же ответ, что и другие, но, опять же, «расширенный режим» доступен только в Notepad ++ 4.9, 5.x и более)


С апреля 2009 года на сайте Notepad ++ появилась статья на эту тему:
« Как заменить концы строк, изменив таким образом макет строк ».
(упомянуто Георгиевской в его / ее ответе ниже )

Некоторые соответствующие выдержки включают в себя следующие поисковые процессы:

Простой поиск ( Ctrl+ F), режим поиска =Normal

Вы можете выбрать EOLв окне редактирования.

  • Просто переместите курсор в конец строки и введите Shift+ RightArrow.
  • или, чтобы выбрать EOLс помощью мыши, начните с конца строки и перетащите в начало следующей строки; перетаскивание вправо от EOLне будет работать. Вы можете вручную скопировать EOLи вставить его в поле для файлов Unix ( LF-только).

Простой поиск (Ctrl + F), режим поиска = расширенный

Параметр «Расширенный» показывает \nи \rкак символы, которые могут быть сопоставлены.
Как и в обычном режиме поиска, Notepad ++ ищет точный символ.
Поиск \rв файле формата UNIX ничего не найдет, но поиск \nбудет. Точно так же файл формата Macintosh будет содержать, \rно не содержать \n.

Простой поиск (Ctrl + F), режим поиска = регулярное выражение

Регулярные выражения используют символы ^и $для привязки строки соответствия к началу или концу строки. Например, поиск return;$найдет вхождения «return»; это происходит без последующего текста в той же строке. Якорные символы работают одинаково во всех форматах файлов.
«.» метасимвол точки не соответствует окончанию строки.

[Проверено в Notepad ++ 5.8.5]: поиск по регулярному выражению с явным \rили \nне работает (в отличие от документации Scintilla ) .
Ни поиск по явному (вставленному) LF, ни по (невидимым) символам EOL, помещенным в поле, когда выбран EOL. Расширенный поиск ( Ctrl+ R) без регулярных выражений

Ctrl+ Mвставит что-то, что соответствует переводу строки. Они будут заменены строкой замены.
Я рекомендую этот метод как наиболее надежный, если вам действительно не нужно использовать регулярные выражения.
Например, чтобы удалить каждую вторую новую строку в файле с двойным интервалом, дважды введите Ctrl+ Mв поле строки поиска и один раз в поле строки замены.

Расширенный поиск ( Ctrl+ R) с помощью регулярных выражений.

Ни Ctrl+ M, $ни \r\nсоответствие.


В той же вики упоминается альтернатива Hex-редактору :

  • Введите новую строку в начале документа.
  • Затем выберите для просмотра документа в режиме Hex .
  • Выберите одну из новых линий и нажмите Ctrl+ H.
  • Когда у вас открыто диалоговое окно «Заменить», выберите на фоне новую строку замены и Ctrl+ Cскопируйте ее, чтобы вставить ее в текстовый ввод «Заменить».
  • Затем заменить или заменить все, как вы хотите.

Примечание: символ, выбранный для новой строки, обычно отображается как 0a.
Может иметь другое значение, если файл в формате Windows. В этом случае вы всегда можете перейти к Edit -> EOL Conversion -> Convert to Unix Format, а после замены переключить его обратно и Edit -> EOL Conversion -> Convert to Windows Format.


1
Я работал v 4.7. Обновление до последней версии и расширенный режим работает как рекламируется. Спасибо всем, кто откликнулся.
Полара

+1: у меня был 4.6, и у меня была похожая проблема. И благодаря вашему ответу я обновился до 5+. Спасибо!
paercebal

Оно работает! Но это делает Notepad ++ RegExp отстойным. UltraEdit-32 умнее, вам просто нужно \ n, и вы закончили свою работу ...
thenonhacker

\ r \ n работал для меня, но не \ n, что отчасти нелогично, если вы разработчик, который привык \ n быть сокращением для \ r \ n.
Уоррен П

2
@GarretWilson Я подтверждаю, что все [^\r]\nработает отлично (поиск по регулярному выражению): i.stack.imgur.com/PxZWD.png
VonC

22

Похоже, что это часто задаваемые вопросы , и предлагаемое разрешение:

Простой поиск (Ctrl + H) без регулярных выражений

Вы можете включить Просмотр / Показать конец строки или просмотреть / Показать все, и выберите теперь видимые символы новой строки. Затем при запуске команды некоторые символы, соответствующие символу новой строки, будут вставлены в поле поиска. Совпадения будут заменены строкой замены, в отличие от режима регулярных выражений.

Примечание 1: если вы выделите их мышью, начните прямо перед ними и перетащите в начало следующей строки. Перетаскивание до конца строки не сработает.

Примечание 2: Вы не можете скопировать и вставить их в поле самостоятельно.

Расширенный поиск (Ctrl + R) без регулярных выражений

Ctrl + M вставит что-то, что соответствует переводу строки. Они будут заменены строкой замены.


2
Вы также можете использовать Ctrl + M, чтобы вставить новые строки в строку замены.
Дасти Кэмпбелл

2
Это часто задаваемые вопросы, потому что это что-то вроде дизайнерской бородавки в другом блестящем продукте.
Уоррен П

11

В диалоговом окне «Замена» вы хотите установить режим поиска «Расширенный». Обычные или обычные выражения не будут работать.

Затем просто найдите «\ r \ n» (или просто \ n для файлов Unix или просто \ r для файлов формата Mac) и установите замену на то, что вы хотите.


Этот ответ был устаревшим, когда он был написан - Mac не использует \rс 2001 года ... (сейчас он unix)
Jasper

9

Мне не очень повезло с регулярными выражениями \ r \ n из окна поиска / замены.

Тем не менее, это работает в Notepad ++ v4.1.2:

  1. Используйте меню «Вид | Показать конец строки», чтобы включить отображение символов конца строки. (Перевод строки возврата каретки должен отображаться в виде однотонного символа CRLF.)

  2. Выберите один из «символов» CRLF (поместите курсор непосредственно перед ним, удерживайте нажатой клавишу SHIFT, а затем один раз нажмите клавишу RIGHT CURSOR).

  3. Скопируйте символ CRLF в буфер обмена.

  4. Убедитесь, что у вас не открыто диалоговое окно поиска или поиска / замены.

  5. Откройте диалог поиска / замены. Поле «Найти что» отображает содержимое буфера обмена: в данном случае это символ CRLF, который отображается как 2 «прямоугольных символа» (предположительно, это непечатный символ?)

  6. Убедитесь, что опция «Регулярное выражение» выключена.

Теперь вы должны иметь возможность считать, находить или заменять по желанию.



4

Я нашел, как это работает, с помощью функции Replace и с помощью «\ n» в режиме «Extended». Я использую версию 5.8.5.


1
Один из немногих пунктов на этой странице, который работает. Использование notepadd ++ 5.8.6. Трудно поверить в то, что так просто должно потребоваться слишком много сложных и часто не работающих ответов, которые были даны в этой теме.
Андрей С

4

В 2013 году, v6.13 или новее, используйте:

Меню ПравкаПреобразование EOLФормат Windows .


Это не распространяется на общий случай замены CRLF одним или несколькими произвольными символами. Или заменить один или несколько произвольных символов на CRLF (скажем, заменить пробел на CRLF).
Питер Мортенсен

2

Предполагая, что поиск выполняется по "регулярным выражениям", ищите \ r \ n. Я предпочитаю \ r? \ N, потому что некоторые файлы не используют возврат каретки.

РЕДАКТИРОВАТЬ: Спасибо за отзыв, кто бы ни проголосовал за это. Я узнал, что ... ну, ничего, потому что вы не предоставили обратной связи. Почему это не так?


1
Я не уверен точно, почему это не работает, но это не так. Я предполагаю, что эта реализация регулярного выражения (в Notepad ++) проверяет только одну строку за раз и игнорирует любые символы новой строки. Вероятно, поэтому вы были отклонены.
Фрэнк Гаддер

1
Ага. regex строка за строкой в ​​notepad ++, поэтому вы можете позиционно сопоставлять EOL с $, но не можете искать / заменять выражения, которые пересекают границы строк.
Уоррен П

2

Используйте функцию расширенного поиска ( Ctrl+ R) и используйте сочетание клавиш для CRLF ( Ctrl+ M), чтобы вставить возврат каретки.


Ctrl + R не работал для меня, когда я попробовал это. В документ вставлен странный управляющий символ " DC2". Версия Notepad ++: 7.5.6 (2018-05-19).
Питер Мортенсен

2

Если вам нужно выполнить сложную замену регулярного выражения, включая \ r \ n, вы можете обойти ограничение с помощью трехэтапного подхода:

  1. Заменить все \r\nтегом, скажем, #GO#→ Проверить «Расширенные», заменить \r\nна#GO#
  2. Выполните регулярное выражение, например, удалите многострочные ICON="*"из HTML-закладок → Проверьте регулярное выражение, заменитеICON=.[^"]+.> by >
  3. Поставить обратно \ r \ n → Проверить 'Расширенные', заменить #GO#на\r\n

2

Зайдите в Вид -> Показать символ -> Показать все символы // Это сработало для меня


1

Сделайте эту настройку. Меню-> Вид-> Показать символ-> снять флажок Показать конец строки


1
Это не отвечает на оригинальный вопрос. Пожалуйста, объясните, почему вы считаете это полезным вкладом в эти вопросы и ответы. Пожалуйста, также прочитайте страницы справочного центра о том, как сделать полезные ответы.
AdrianHHH

1

Я открыл файл в Notepad ++ и сделал замену в несколько шагов:

  1. Заменить все "\ r \ n" на "\ r \ n"
  2. Заменить все "; \ r \ n" на "\ r \ n"
  3. Заменить все "\ r \ n" на ""

Это помещает все разрывы, где они должны быть, и удаляет те, которые разбивают файл.

Это сработало для меня.


1

Я был совершенно не в состоянии сделать это в NP v6.9. Я нашел это достаточно легко на Msoft Word (2K).

Откройте документ, перейдите к редактировать-> заменить.

Затем в нижней части окна поиска нажмите «еще», затем найдите кнопку «Специальные», и у них есть несколько вещей для вас. Для стиля Dos я использовал «параграф». Это пара в окнах земли.


0

Просто сделайте \ r с находкой и замените пробел в поле замены, чтобы все доходило до одной строки. Затем найдите и замените (в моем случае точкой с запятой) и замените на \ n

:) -T & C


1
Это отличается от существующих ответов, как?
Все работники необходимы

0

Чтобы преобразовать документ из отдельных строк в одну строку, где каждая строка образует одну запись в списке через запятую:

  1. ctrl+ fоткрыть поиск / замену.
  2. Нажмите вкладку «Заменить».
  3. Заполните "Найти что" запись с " \r\n".
  4. Заполните поле «Заменить» на « ,» или « , » (в зависимости от предпочтений).
  5. Снимите флажок «Совпадение всего слова» (важный бит, который ускользает от логики).
  6. Проверьте переключатель «Расширенные».
  7. Нажмите кнопку «Заменить все».

Эти шаги превращаются, например,

фу бар

Бар Баз

Баз Фу

в:

фу бар, бар баз, баз фу

или: (в зависимости от предпочтений)

фу бар, бар баз, баз фу


0

Может быть, вы можете использовать плагины TextFX

В TextFX перейдите к редактированию textfx → удалите пустые строки


0

Чтобы найти любой вид последовательности разрыва строки, используйте следующую конструкцию регулярного выражения:

\R

Для того, чтобы найти и выбрать последовательные последовательности линии разрыва, добавить +после \R: \R+.

Убедитесь, что вы включили режим регулярных выражений :

введите описание изображения здесь

Это соответствует:

  • U+000DU+000A -CRLF` последовательность
  • U+000A- LINE FEED, Л.Ф.
  • U+000B- LINE TABULATION, VT
  • U+000C- FORM FEED, FF
  • U+000D- CARRIAGE RETURN, ЧР
  • U+0085- NEXT LINE, NEL
  • U+2028 - LINE SEPARATOR
  • U+2029 - PARAGRAPH SEPARATOR
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.