我想在替换术语中指定一个捕获的组,然后指定一个文字数字,但文字数字被解释为组编号的一部分。
鉴于这个(人为的)例子:
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 组然后是文字数字”?
最佳答案
Notepad S&R regex 由 Boost regex 库提供支持。
明确的 $n
反向引用是通过 ID 周围的大括号 ( {}
) 实现的,因此,您可以在此处使用 ${1}6
作为替代。
Notepad++ 还支持以 \
( \1
、 \2
等 * 直到 9
)开头的 BRE 样式反向引用。因此,当您在替换模式中使用 \16
时,引擎只会将其解析为 Backreference 1 + 文字符号 6
。您可以通过将 (.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)
替换为 \11
中的 1234567890A
来检查它。结果是 A
,而不是 11
(第 11 组)。 $11
替换将导致 A
。
Notepad++ help 提到了这些符号,但缺少细节:
$n
,${n}
,\n
Returns what matched the subexpression numbered n. Negative indices are not alowed.
关于regex - 如何在 Notepad++ 替换中分隔正则表达式组号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39282477/