9

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

例如:这是一个人为的例子,但它应该说明正在发生的事情。

输入字符串:abcdefghij
查找内容:^(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)$
替换为:\10
预期输出:j
实际输出:a0

我也试过:

  替换为:10 美元

它不是插入\10$10插入第十个分组括号的内容,而是将第一个分组括号跟随的内容插入“0”。

更新:

这确实可以$10在较新版本的 Sublime Text 中使用,但使用${10}如下所述的语法会更好。

4

2 回答 2

11

利用:

${10}

我刚刚尝试过,这对我有用。

我也尝试使用 find:

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

用。。。来代替:$10

它奏效了。但是,我使用的是 v2.0.2 build 2221。相同的 with\10不起作用,但可以按照您在问题中描述的那样工作。

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

虽然现在,如果您想替换第 10 个捕获后跟一个数字(例如 $100),引擎将查找第 100 个捕获组,并且对于您的示例,将替换为任何内容。

于 2013-09-27T20:18:36.770 回答
4

你需要戴上牙套

${10}

养成这个习惯!

$1当您实际上想要附加一个数字时,它变得更加有用0。那么你可能需要${1}0

于 2013-09-27T20:19:38.607 回答