Notepad ++ Regex替换 - \1不起作用?

Mik*_*ike 13 regex replace notepad++

只是为了序言,我已经阅读了许多关于此的问题,但我找不到答案(至少在我的挖掘中).如果我错过了,请随意指出!

我知道如何使用正则表达式,事实上我找到了我正在搜索的文本.但是,当我尝试做其他问题建议"\1MyAppendedTextHere"和替换时,它只是擦除匹配的模式并添加后面的内容\1.(之前提出的问题表明,"\1"记事本++是如何做到这一点的).这改变了吗?难道我做错了什么?

这是它的样子:

find: name[A-Z_0-9]+
replace: \1_SUFFIX
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏!

Tim*_*ker 19

\1引用第一个捕获组的内容,这意味着搜索正则表达式中的第一组括号.你的正则表达式中没有一个,所以\1没有什么可以参考.

\0如果要引用整个匹配,请使用,或在正则表达式的相关部分周围添加括号.

find: name[A-Z_0-9]+
replace: \0_SUFFIX
Run Code Online (Sandbox Code Playgroud)

nameABC变成nameABC_SUFFIX.

使用捕获组,您可以执行类似的操作

find: name([A-Z_0-9]+)     
replace: \1_SUFFIX
Run Code Online (Sandbox Code Playgroud)

这将取代nameABC使用ABC_SUFFIX.

  • 另外,由于 Notepad++ 使用 PCRE 正则表达式引擎,你应该避免使用 `\1` 并习惯使用 `$1`(参见 http://stackoverflow.com/q/1068840/2140859) (2认同)