Многострочный поиск и замена регулярных выражений! - PullRequest
27 голосов
/ 18 сентября 2009

Я врезался в стену. Кто-нибудь знает хороший текстовый редактор, который имеет поиск и замену, как Notepad ++, но также может выполнять поиск и замену регулярных выражений в несколько строк? По сути, я пытаюсь найти что-то, что может соответствовать регулярному выражению, например:

поиск oldlog\(.*\n\s+([\r\n.]*)\);
замена newlog\(\1\)

Есть идеи?

Ответы [ 14 ]

10 голосов
/ 15 июня 2012

Notepad ++ теперь может обрабатывать многострочные регулярные выражения (просто обновите до последней версии - функция была введена в марте 12 года).

Мне нужно было удалить все операторы onmouseout и onmouseover из документа HTML, и мне нужно было создать не жадное многострочное совпадение.

onmouseover=.?\s*".*?"

Убедитесь, что вы отметили флажок:

[ ] . matches newline
, если хотите использовать возможность многострочного сопоставления.
8 голосов
/ 18 сентября 2009

EditPad Pro имеет лучшие возможности регулярных выражений, чем любой другой редактор, который я когда-либо использовал.

Кроме того, я подозреваю, что в вашем регулярном выражении есть ошибка - [\r\n.] будет соответствовать только возвратам каретки, переводам строки и полным остановкам. Если вы пытаетесь сопоставить любой символ (т. Е. Оператор точки, плюс CR и LF), попробуйте вместо этого [\s\S].

5 голосов
/ 22 октября 2010

Я почти уверен, что Notepad ++ может сделать это сейчас с помощью плагина TextFX (который включен по умолчанию). Хит Control-R в Notepad ++ и играть.

5 голосов
/ 10 мая 2010

Я использую Eclipse , которая бесплатна и которая, возможно, у вас уже есть, если вы разработчик. '\ R' действует как независимый от платформы разделитель строк. Вот пример многострочного поиска:

поиск:

\ RBibitem. (\ R. )? \ R? {([^ {] )} $ \ R ^ ([^ \]. [^}] $ \ R. $ \ R. )

и заменить:

\ defcitealias {$ 2} {$ 3}

5 голосов
/ 21 сентября 2009

Редактор Zeus может выполнять многострочный поиск и замену.

5 голосов
/ 18 сентября 2009

Моя личная рекомендация - UltraEdit от IDM Computing ( www.ultraedit.com ) - он может выполнять регулярные выражения (как поиск, так и замена) с синтаксисом Perl, Unix и UltraEdit. Многострочное сопоставление является одной из возможностей режима регулярного выражения Perl.

Он также имеет другие приятные возможности поиска (например, поиск в определенном диапазоне столбцов символов, поиск по нескольким файлам, история поиска, поиск в избранном и т. Д.) *

alt text
(источник: ultraedit.com )

4 голосов
/ 18 сентября 2009

TextPad имеет хорошие возможности поиска и замены в Regex; Я использовал это некоторое время и очень доволен этим.

TextPad screenshot

Из Особенности :

Мощный поиск / замена двигателя с использованием Регулярные выражения в стиле UNIX, с сила редактора макросов. Наборы файлы в дереве каталогов могут быть поиск, и текст можно заменить в все открытые документы одновременно.

Чтобы получить больше параметров, чем вам нужно, посмотрите " Блокнот ++ Альтернативы " на AlternativeTo.net .

2 голосов
/ 07 июня 2012

Я все время пользуюсь Notepad ++, но его Regex всегда немного не хватает.

Sublime Text - это то, что вы хотите.

2 голосов
/ 07 апреля 2012

вы можете использовать плагин Python Script для поиска и замены многострочных регулярных выражений! - http://npppythonscript.sourceforge.net/docs/latest/scintilla.html?highlight=pymlreplace#Editor.pymlreplace

# This example replaces any <br/> that is followed by another on the next line (with optional spaces in between), with a single one
editor.pymlreplace(r"<br/>\s*\r\n\s*<br/>", "<br/>\r\n")
1 голос
/ 18 сентября 2009

EditPlus хорошо выполняет поиск / замену с использованием регулярных выражений (включая многострочный)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...