我想指定一个捕获的组,然后在替换项中指定一个文字数字,但是文字数字被解释为组号的一部分。
给定这个(人为的)示例:
Input text: A5
Find: (.)(.)
Replace: $16
Expected result: A6
Actual result: <blank>
实验表明$16
被解释为"第16组"。
我尝试使用$16
使6
文字,这给了我第1组,但6
空白-即结果只是A
。$1\6
给了我A6
。
一般的问题是,"我如何指定组1然后是一个文字数字"?
Notepad S&R regex由Boost regex库提供支持。
明确的$n
反向引用是用大括号({}
)在ID周围实现的,因此,您可以在这里使用${1}6
作为替代。
notepad++还支持以开头的BRE风格反向引用(
1
, 2
等*直到9
)。因此,当您在替换模式中使用16
时,引擎只会将其解析为Backreference 1 +文字符号6
。您可以通过将1234567890A
中的(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)
替换为11
来检查。而不是A
(第11组),你将得到11
作为结果。替换$11
会产生A
。
notepad++帮助提到了这些符号,但缺少细节:
$n
,${n}
,n
返回与编号为n的子表达式匹配的内容。不允许使用负索引。