【发布时间】:2012-09-22 19:39:46
【问题描述】:
我正在尝试使用正则表达式搜索/替换来用大括号(例如${foo})封装变量(例如$foo)。我想出了以下正则表达式,但它没有按预期工作:
s/"\([^"]*\)\$\([a-zA-Z0-9:]*\)\([^"]*\)"/"\1\${\2}\3"/g
但是,我对这种模式有一些问题。每个引用的字符串只会执行一种模式。这没关系,因为我可以在文件上多次运行表达式,但它不处理已经封装在大括号中的变量。它只是在它们上面放了第二组大括号。
我现在的想法是去掉 \2 的大括号,但我认为这不会起作用,因为模式仍然会匹配,并且每个引用的字符串只会执行 1 次替换。我查看了反向引用表达式文档,但无法确定更好的方法。
【问题讨论】:
标签: regex sed preg-replace replace