我知道nano
' 的搜索和替换功能,但它是否能够使用正则表达式进行匹配和替换(特别是使用部分匹配的替换)?如果是这样,您能否提供一些使用的语法示例(用于匹配和替换)?
我开始学习 Perl 风格的正则表达式,但我发现文本编辑器有时会提出自己的语法。
我的 nano 版本可以选择使用meta
字符 +进行正则表达式搜索R
。在 Windows 上的 cygwin 中,元键是alt
,所以我点击ctrl
+\
进入搜索和替换模式,然后alt
+r
切换到正则表达式搜索。
您需要在全局nanorc
文件中添加或取消注释以下条目(在我的机器上,它是/etc/nanorc
):
set regexp
然后启动一个新终端并按CTRL+/并进行替换,现在应该可以识别正则表达式。
搜索conf->(\S+)
:
用。。。来代替\1_conf
按a
替换所有匹配项:
最终结果:
nano 的正则表达式格式/表示法使用“扩展正则表达式”,即POSIX 扩展正则表达式,由egrep
and使用sed -r
,这包括元字符和.
, , , , , to , , and , , ,和字符类,例如,, , , , , , , , , 和.[
]
^
$
(
)
\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 中似乎没有办法匹配跨越多行的任何内容。
这有点旧,只是更新搜索索引。
Nano 5.5 使用ASCII
同一个表中的列。
感谢@SP Arif Sahari Wibowo,
无论如何,我在这里找到了答案(相同的 wiki 链接): https ://en.wikipedia.org/wiki/Regular_expression#POSIX_basic_and_extended
我最近遇到了在以数字开头的每行开头插入文本的问题。为此,将其与我不想更改的文本区分开来的唯一方法是上一个新行。
玩弄这个答案中提供的信息,我能够做到这一点,并决定将其添加到答案中,以防其他人面临同样的情况。
要搜索后跟数字的行首,然后在以数字开头的每一行的开头插入“文本字符串”:
\ 然后“(^ [0-9])”按进位返回,然后:“文本字符串1”按进位返回并选择是,如果它执行您想要的下一步按a。省略 " 引号。