我试图在字符串中捕获几个组,并使用正则表达式对它们重新排序。然而,一旦我达到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}
语法更好,如下所述。
答案 0 :(得分:9)
使用:
${10}
我只是尝试过,这对我有用。
我也尝试过使用find:
^(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)$
替换为:$10
它有效。我正在使用v2.0.2 build 2221。与\10
相同的功能不起作用,但可以按照您在问题中的描述进行操作。
值得注意的是,许多正则表达式引擎替换正在从\#
格式转换为$#
格式,这也许就是为什么$#
对我来说效果更好的原因没有支撑。
虽然现在,如果您想要替换第10次捕获后跟一个数字(例如100美元),引擎将查找第100个捕获组,对于您的示例,将替换为空。
答案 1 :(得分:4)
你需要戴上大括号
${10}
养成这个习惯!
如果您确实想要使用数字$1
附加0
,它会变得更有帮助。那么您可能需要${1}0