我尝试使用 Notepad++ 搜索/替换正则表达式来将特定单词替换为这些单词的较短版本。
我使用以下正则表达式来匹配以
er
结尾的每个单词(但不是 er
作为单词) - 并使用反向引用将匹配单词替换为减去结尾 r
的相同单词:
Find what:
([a-zA-z]+e)r
Replace with:
$1
但它不会替换匹配的单词,即使它找到了它们。
但是,如果我将反向引用语法更改为:
Replace with:
\1
一切正常。
为什么
$1
反向引用不起作用?
反向引用的两种形式 -
\1
和 $1
有什么区别?
Notepad++ 的早期版本(v5.9.8 及之前)仅支持标准 POSIX 正则表达式。然而,在 6.0 版本中添加了完整的 PCRE(Perl 兼容正则表达式)搜索/替换支持:
- 支持 PCRE(Perl 兼容正则表达式)。
这意味着,如果您使用 Notepad++ v6.0 或任何更新版本(例如 v6.1.5),您可以使用 PCRE 语法,并使用
$1
而不是 \1
进行反向引用,但它不会与早期版本的 Notepad++(版本 6.0 之前)兼容。除此之外,它们很相似。
有关反向引用语法之间的差异以及新语法支持背后的原因的更多信息,请参阅 替换字符串中的反向引用语法(为什么是美元符号?)。
有关如何在 Notepad++ 中使用正则表达式的有用教程可以在此处找到。