【发布时间】:2011-12-10 05:17:42
【问题描述】:
在 linux sed 中,我们可以使用“&”来匹配正则表达式。我可以在记事本++中做同样的事情吗?在查找和替换中,我可以使用正则表达式匹配的字符串用于替换部分吗?
【问题讨论】:
在 linux sed 中,我们可以使用“&”来匹配正则表达式。我可以在记事本++中做同样的事情吗?在查找和替换中,我可以使用正则表达式匹配的字符串用于替换部分吗?
【问题讨论】:
Notepad++ 6.x 版已发布,使用 PCRE 作为其正则表达式引擎进行查找和替换。您现在可以使用$0 或$&(但不能使用\& 或&)来引用替换字符串中的整个匹配项,而无需再捕获整个模式。
例如,将foo 替换为$&bar$& 会产生foobarfoo。
恐怕在 Notepad++ 正则表达式中没有办法做到这一点。您必须手动捕获整个模式并在替换字段中使用\1。
例如,对于以下 sed 命令:
sed s/foo/\&bar\&/
为输入字符串foo 输出foobarfoo,Notepad++ 正则表达式中的等价物是:
查找:
(foo)
替换为:
\1bar\1
【讨论】:
\1 时,您需要将括号添加到整个字符串中,就像我对(foo) 所做的那样。您不需要在 sed 中将整个模式括在括号中。
echo foo | sed s/foo/\&bar\&/ 版本中返回 &bar& 这是我所期望的,因为 & 不需要转义,除非你想返回 &。