我试图想出一个正则表达式搜索/替换来封装带有大括号(例如; ${foo}
)的变量(例如; $foo
)。我想出了下面的正则表达式,但它并不如预期运行:在同一行中多次替换模式
s/"\([^"]*\)\$\([a-zA-Z0-9:]*\)\([^"]*\)"/"\1\${\2}\3"/g
不过,我有一些问题,这种模式。它只会为每个引用的字符串执行一个模式。这是好的,因为我可以在文件上多次运行表达式,但它不处理已经封装在大括号中的变量。它只是把第二套大括号放在它们上面。
我现在的想法是剥离大括号\2
,但我不认为这将工作,因为模式将仍然匹配,它将只执行每引号字符串1替换。我查看了反向引用表达式文档,但我无法确定更好的方法。
太棒了,这与预期完全一致。谢谢。 – user1713098
没问题,如果我的答案奏效,你可以[接受它](http://meta.stackexchange.com/a/5235),点击旁边复选标记的大纲。 –
这只有在一行上只有一对'''',即数据如'a“b”$ c“d”'将以a结尾“a”b“$ {c}”d“ ' – potong