如何在Vim - Regex中添加数字引用?

时间:2016-10-31 17:34:11

标签: regex vim

我一直试图使用正则表达式在我的文件中的某些数字周围添加引号,但未成功。为了澄清,让我举一个我想要做的例子。

myFunction(100)之类的内容会更改为myFunction("100")

我认为:100,300s/\([0-9]*\)/"\0"会起作用,但它也会在空格周围加上引号。

我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:2)

您应该稍微修改正则表达式:

\1

在正则表达式中,第一个匹配的组为\0,而不是\+。使用*代替[1,[[2],3]] |> List.flatten |> how do I multiply each element with 2 [1,[[2],3]] |> List.flatten |> &(&1 * 2) #=> error...can only pipe into local calls 看起来更安全。

答案 1 :(得分:1)

这不能按预期工作的原因是因为[0-9]*匹配所有零长度的字符串,所以你的替换是在每两个字符之间添加两个引号。将其更改为[0-9]+(要求至少一个数字)将解决您的问题。

作为额外的改进,您可以将[0-9]替换为\d。此外,\0是整个匹配表达式的替代,因此您的括号是不必要的::100,300s/\d+/"\0"将完成您想要的。捕获的子组从\1开始。