Сопоставление на основе регулярных выражений и совмещение с нано? - PullRequest
19 голосов
/ 12 октября 2011

Мне известна функция поиска и замены nano, но способна ли она использовать регулярные выражения для сопоставления и подстановки (особенно подстановок, использующих часть совпадения)? Если да, можете ли вы привести некоторые примеры используемого синтаксиса (как для сопоставления, так и для замены)?

Я порезался о регулярных выражениях в стиле Perl, но обнаружил, что текстовые редакторы иногда придумывают свой собственный синтаксис.

Ответы [ 3 ]

19 голосов
/ 26 октября 2011

В моей версии nano есть возможность регулярного поиска с символом meta + R.В cygwin в Windows мета-ключ - alt, поэтому я нажимаю ctrl + \, чтобы перейти в режим поиска и замены, а затем alt + r, чтобы переключить поиск в регулярное выражение.

14 голосов
/ 13 октября 2011

Вам необходимо добавить или откомментировать следующую запись в вашем глобальном файле nanorc (на моей машине это было /etc/nanorc):

set regexp

Затем запустить новый терминали нажмите CTRL + / и выполните замены, которые теперь должны учитывать регулярные выражения.

РЕДАКТИРОВАТЬ


Найти conf->(\S+):

enter image description here


Заменить на \1_conf

enter image description here


Нажмите a, чтобы заменить все вхождения:

enter image description here


Конечный результат:

enter image description here

13 голосов
/ 27 ноября 2012

Формат регулярного выражения / нотация для нано использования " Расширенное регулярное выражение ", то есть Расширенное регулярное выражение POSIX , которое используется egrep и sed -r, это включаетметасимволы ., [ и ], ^, $, (, ), \1 до \9, *, { и }, ?, +, | и классы символов, такие как [:alnum:], [:alpha:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:], [:space:], [:upper:] и [:xdigit:].

Для более полной документации вы можете увидеть страницу руководства, man 7 regex в Linux или man 7 re_format в OS X. Эта страница может также дать вам ту же информацию: https://en.wikipedia.org/wiki/Regular_expression#POSIX_basic_and_extended

К сожалению, в nano, кажется, нет способа сопоставить что-либо, что охватывает несколько строк.

...