regex - 如何在 Notepad++ 替换中分隔正则表达式组号?

标签 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 组然后是文字数字”?

最佳答案

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/

相关文章:

notepad++ - 如何通过 ESC 退出 Notepad++?

javascript - 在不区分大小写的 RegExp 中向开始替换的事物添加一个字符串。

linux - 使用 sed 命令忽略包含\和多个空格的变量

python - 如何使用python删除字典中的非字母数字字符

string - 批量 * 通配符替换

javascript - 在 php 中重新创建 js 正则表达式匹配函数

xml - notepad++ 的全局 userDefineLang.xml

notepad++ - 无法使用 Notepad++ 在远程计算机上编辑和保存文件

java - ReplaceAll 也替换斜杠之前和之后的完整单词

java - java中如何将段落分割成句子