我知道nano
的搜索和替换功能,但它是否能够使用正则表达式进行匹配和替换(特别是使用匹配的一部分的替换)?如果是这样,你能提供一些所用语法的例子(匹配和替换)吗?
我切断了Perl风格的正则表达式,但我发现文本编辑器有时会提出自己的语法。
答案 0 :(得分:19)
我的nano版本可以选择使用meta
字符+ R
进行正则表达式搜索。在Windows上的cygwin中,元键是alt
,因此我点击ctrl
+ \
进入搜索和替换模式,然后alt
+ {{ 1}}切换到正则表达式搜索。
答案 1 :(得分:14)
您需要在全局nanorc
文件中添加或取消评论以下条目(在我的计算机上,它是/etc/nanorc
):
set regexp
然后启动一个新终端,然后按 CTRL + / 并进行替换,现在应该是正则表达式。
搜索conf->(\S+)
:
替换为\1_conf
按a
替换所有出现次数:
最终结果:
答案 2 :(得分:13)
用于纳米使用的正则表达式格式/表示法" 扩展正则表达式",即 POSIX扩展正则表达式,由{{使用1}}和egrep
,其中包括元字符sed -r
,.
和[
,]
,^
,$
,{ {1}},(
至)
,\1
,\9
和*
,{
,}
,{{1和?
,+
,|
,[:alnum:]
,[:alpha:]
,[:cntrl:]
,[:digit:]
,{等字符类{1}},[:graph:]
,[:lower:]
和[:print:]
。
有关更完整的文档,您可以参阅手册页,Linux中的[:punct:]
或OS X中的[:space:]
。此页面也可能提供相同的信息:https://en.wikipedia.org/wiki/Regular_expression#POSIX_basic_and_extended
不幸的是,在nano中似乎无法匹配跨越多行的任何内容。
答案 3 :(得分:0)
这个有点老了,只是更新了搜索索引。
Nano 5.5 使用同一个表中的 ASCII
列。
感谢@SP Arif Sahari Wibowo,
无论如何我在这里找到了答案(同一个维基链接): https://en.wikipedia.org/wiki/Regular_expression#POSIX_basic_and_extended
答案 4 :(得分:0)
我最近遇到了在以数字开头的每一行的开头插入文本的问题。为此,将其与我不想更改的文本区分开来的唯一方法是之前的新行。
利用此答案中提供的信息,我能够做到并决定将其添加到答案中,以防其他人面临同样的情况。
要搜索后跟数字的行的开头,然后在以数字开头的每一行的开头插入“文本字符串”:
\ 然后“(^[0-9])”按进位返回,然后:“文本字符串 1”按进位返回并选择是,如果它符合您的要求,接下来按 a 全部。省略 " 引号。