我想指定一个被捕获的组,然后在替换术语中指定一个文字数字,但该字面数字被解释为组编号的一部分。
鉴于这个(人为的)例子:
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组,然后是字面数字?”
答案 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的子表达式匹配的内容。负指数不属于。