我尝试使用Notepad++ Search/Replace with a Regular Expression将特定单词替换为这些单词的较短版本。
我使用下面的正则表达式来匹配每个以er
结尾的单词(但不是er
作为单词),并使用反向引用将匹配的单词替换为相同的单词减去结尾r
:
Find what:
*([a-zA-z]+e)r
**Replace with:
*$1
**
但它不会替换匹配的单词,即使它找到了它们。
但是,如果我将反向引用语法改为:
Replace with:
*\1
**
一切正常。
为什么$1
不能反向引用?
两种形式的背衬-\1
和$1
之间有什么区别?
1条答案
按热度按时间tct7dpnv1#
Notepad++的早期版本(v5.9.8及更早版本)仅支持标准POSIX正则表达式。然而,完整的PCRE(Perl兼容正则表达式)搜索/替换支持在6.0版中添加:
New features and enhancement in Notepad++ 6.0:
这意味着,如果您使用的是Notepad++ v6.0或任何更新版本(例如v6.1.5),您可以使用PCRE语法,并使用
$1
而不是\1
进行反向引用,但它与Notepad的早期版本(6.0之前的版本)不兼容。除此之外,他们是相似的。有关后向引用语法之间的差异以及新语法支持背后的原因的更多信息,请参见Backreferences syntax in replacement strings (why dollar sign?)。
关于如何在Notepad中使用正则表达式的有用教程可以在这里找到。