Regex 记事本++;搜索/替换-\1或$1中的正则表达式反向引用语法

Regex 记事本++;搜索/替换-\1或$1中的正则表达式反向引用语法,regex,escaping,notepad++,replace,backreference,Regex,Escaping,Notepad++,Replace,Backreference,我尝试使用记事本++搜索/替换为正则表达式,将特定单词替换为这些单词的较短版本 我使用以下正则表达式匹配以er结尾的每个单词(但不是作为单词的er),并使用反向引用将匹配的单词替换为相同的单词减去结尾r: 查找内容:([a-zA-z]+e)r 替换为:$1 但它不会替换匹配的单词,即使它找到了它们 但是,如果我将反向引用语法更改为: 替换为:\1 一切正常 为什么$1反向参考不起作用 BackReference的两种形式——\1和$1之间有什么区别?记事本++的早期版本(v5.9.8和更早版

我尝试使用记事本++搜索/替换为正则表达式,将特定单词替换为这些单词的较短版本


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

查找内容:
([a-zA-z]+e)r

替换为:
$1

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

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

替换为:
\1

一切正常


为什么
$1
反向参考不起作用


BackReference的两种形式——
\1
$1
之间有什么区别?

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

  • 支持PCRE(Perl兼容的正则表达式)
这意味着,如果您使用的是记事本++v6.0或任何较新版本(例如v6.1.5),则可以使用PCRE语法,并使用
$1
而不是
\1
作为反向参考,但它与记事本++的早期版本(6.0之前的版本)不兼容。除此之外,它们是相似的

有关backreference语法之间的差异以及新语法支持背后的原因的更多信息,请参阅


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

@amiregelz我已经使用(并且热爱)Notepad++很多年了,但是我对它最大的挫折之一是它对Regex的支持很差。我简直不敢相信我对这些改进一无所知已经两年了。标准的反向引用,零宽度断言——真漂亮!谢谢你睁开我的眼睛是的,做一些事情,比如搜索以同一个单词开头的连续行等等。它会摇摆;-)<代码>(搜索文本)[^\n]*\n\1