繁体   English   中英

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

[英]Notepad++ Regex Backreference syntax in Search/Replace - \1 or $1

我试图使用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

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 ++中使用正则表达式的有用教程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM