如何在notepad ++替换中划分正则表达式组号?

时间:2016-09-01 23:55:50

标签: regex replace notepad++ regex-group

我想指定一个被捕获的组,然后在替换术语中指定一个文字数字,但该字面数字被解释为组编号的一部分。

鉴于这个(人为的)例子:

Input text: A5
Find: (.)(.)
Replace: $16
Expected result: A6
Actual result: <blank>

实验表明$16被解释为“第16组”。

我尝试使用$1\6制作6字面值,这给了我第1组,但是\6的空白 - 即结果只是A$1\\6给了我A\6

一般问题是,“我如何指定第1组,然后是字面数字?”

1 个答案:

答案 0 :(得分:5)

记事本S&amp; R正则表达式由Boost正则表达式库提供支持。

使用大括号($n)围绕ID进行明确的{}反向引用,因此,您可以在此处使用${1}6作为替代。

Notepad ++还支持从\\1\2等开始的BRE样式反向引用* *最多9)。因此,当您在替换模式中使用\16时,引擎将仅将其解析为反向引用1 +文字符号6。您可以将(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)替换为\11中的1234567890A来进行检查。而不是A(第11组),结果会得到11$11替换会导致A

Notepad++ help提到了这些符号,但缺乏细节:

  

$n ${n} \n
  返回与编号为n的子表达式匹配的内容。负指数不属于。