Notepad++正则替换中$与\是否始终等价?
关于Notepad++正则替换中$和\引用分组的等价性问题
在Notepad++的正则替换里,$1和\1并非始终等价,得看你用的正则引擎模式:
标准正则表达式模式(默认旧模式)
这个模式基于POSIX规范,原本反向引用的标准写法是\1、\2这类,但Notepad++做了兼容处理,同时支持$1、$2的写法——这就是你这次两种替换写法都生效的原因。PCRE(Perl兼容正则)模式
要是你切换到这个模式(新版本Notepad++可在查找替换窗口的「正则表达式」选项下选择),替换字符串里只能用$1、$2来引用捕获分组,\1会被当作字面量的\1字符处理,不再是反向引用。
另外提一句:如果用到命名捕获分组,两种模式的差异更明显——标准模式不支持命名分组,PCRE模式里替换时得用${group_name}或$group_name来引用,查找时才用\k<group_name>。
所以你这次的情况不是特例,只是刚好处于兼容两种写法的标准正则模式下而已。
内容的提问来源于stack exchange,提问作者cbanzet
相关产品推荐
相关产品推荐

