我一直试图使用正则表达式在我的文件中的某些数字周围添加引号,但未成功。为了澄清,让我举一个我想要做的例子。
myFunction(100)
之类的内容会更改为myFunction("100")
。
我认为:100,300s/\([0-9]*\)/"\0"
会起作用,但它也会在空格周围加上引号。
我该怎么做才能解决这个问题?
答案 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
开始。