Sublime Text 2正则表达式与> 9个反向引用匹配

时间:2013-09-27 20:13:06

标签: regex sublimetext2

我试图在字符串中捕获几个组,并使用正则表达式对它们重新排序。然而,一旦我达到9个以上的反向引用,它们就不会像我预期的那样被替换。

例如: 这是一个人为的例子,但它应该说明发生了什么。

Input string: abcdefghij
Find What: ^(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)$
Replace With: \10
Expected output: j
Actual output: a0

我也尝试过:

  Replace With: $10

而不是\10$10插入第十个分组parens的内容,它将第一个分组parens跟随者的内容插入" 0"。

更新:

在较新版本的Sublime Text中使用$10可以正常工作,但使用${10}语法更好,如下所述。

2 个答案:

答案 0 :(得分:9)

使用:

${10}

我只是尝试过,这对我有用。

我也尝试过使用find:

^(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)$

替换为:$10

它有效。我正在使用v2.0.2 build 2221。与\10相同的功能不起作用,但可以按照您在问题中的描述进行操作。

值得注意的是,许多正则表达式引擎替换正在从\#格式转换为$#格式,这也许就是为什么$#对我来说效果更好的原因没有支撑。

虽然现在,如果您想要替换第10次捕获后跟一个数字(例如100美元),引擎将查找第100个捕获组,对于您的示例,将替换为空。

答案 1 :(得分:4)

你需要戴上大括号

${10}

养成这个习惯!

如果您确实想要使用数字$1附加0,它会变得更有帮助。那么您可能需要${1}0