Соответствие Regex и поддержка с помощью nano?
Я знаю nano
функцию поиска и замены, но может ли он использовать регулярные выражения для сопоставления и подстановки (в частности, замены, которые используют часть соответствия)? Если да, можете ли вы привести несколько примеров используемого синтаксиса (как для сопоставления, так и для замены)?
Я режу зубы на регулярных выражениях в стиле Perl, но я обнаружил, что текстовые редакторы иногда придумывают свой собственный синтаксис.
Ответы
Ответ 1
Вам нужно добавить или некомментировать следующую запись в глобальном файле 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]()
Ответ 2
Моя версия nano имеет возможность swtich для поиска в регулярном выражении с символом meta
+ R
. В cygwin в Windows мета-ключ alt
, поэтому я попал в ctrl
+ \
, чтобы перейти в режим поиска и замены, а затем alt
+ R
в swtich для поиска в регулярном выражении.
Ответ 3
Формат/обозначение регулярного выражения для nano-использования "Extended Regular Expression", то есть POSIX Extended Regular Expression, которое используется 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. Эта страница также может предоставить вам такую же информацию: http://en.wikipedia.org/wiki/Regular_expression#POSIX_Basic_Regular_Expressions
К сожалению, в nano, похоже, нет способа сопоставить что-либо, охватывающее несколько строк.