41

我尝试使用带有正则表达式的 Notepad++ 搜索/替换来用这些单词的较短版本替换特定单词。


我使用以下正则表达式匹配以er(但不是er作为单词)结尾的每个单词 - 并使用反向引用将匹配的单词替换为减去结尾的相同单词r

Find what: ([a-zA-z]+e)r

Replace with: $1

但它不会替换匹配的单词,即使它找到了它们。

但是,如果我将反向引用语法更改为:

Replace with: \1

一切正常。


为什么$1反向引用不起作用?

两种形式的反向引用有什么区别 -\1$1

4

1 回答 1

41

Notepad++ 的早期版本(v5.9.8 和更早版本)仅支持标准POSIX正则表达式。但是,在 6.0 版中添加了完整的PCRE(Perl 兼容正则表达式)搜索/替换支持:

Notepad++ 6.0 中的新功能和增强功能:

  • 支持 PCRE(Perl 兼容正则表达式)。

这意味着如果您使用 Notepad++ v6.0 或任何更新版本(例如 v6.1.5),您可以使用 PCRE 语法,并使用$1而不是\1用于反向引用,但它与早期版本的 Notepad++ 不兼容( 6.0 版之前)。除此之外,它们是相似的。

有关反向引用语法之间的差异以及新语法支持背后的原因的更多信息,请参阅替换字符串中的反向引用语法(为什么是美元符号?)

可以在此处找到有关如何在 Notepad++ 中使用正则表达式的有用教程。

于 2012-08-15T13:43:58.143 回答