搜索/替换中的Notepad ++ Regex Backreference语法 - \ 1或$ 1

时间:2012-08-15 13:43:58

标签: regex escaping notepad++ replace backreference

我尝试使用Notepad ++ Search / Replace with Regular Expression将特定单词替换为这些单词的较短版本。


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

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

Replace with: $1

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

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

Replace with: \1

一切正常。


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

后退的两种形式有哪些区别 - \1$1

1 个答案:

答案 0 :(得分:34)

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

  

New features and enhancement in Notepad++ 6.0:

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

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

有关反向引用语法与新语法支持背后原因之间差异的详细信息,请参阅Backreferences syntax in replacement strings (why dollar sign?)

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