我正在尝试RegEx,我有一个变量要替换。
变量初始化如下:
name = ""
,我希望使用正则表达式将""
替换为"personName"
到目前为止,我有以下RegEx:
^(name).*?("")\2
设置捕获组,并且我选择了第2组,但是我不确定如何插入替换文本。
注意:这将与脚本中的sed
一起使用。
答案 0 :(得分:0)
您可以按照以下方式进行操作:
repl='NEW_VALUE'
sed "s/^\(name *= *\"\)\"/\1$repl\"/g" file > newfile
请参见online demo。
BRE POSIX模式的详细信息:
^
-行的开头(如果值可能出现在行的任何位置,则删除该行)\(name *= *\"\)
-捕获组1:name
,0个以上空格,=
,0个以上空格,"
\"
-双引号。 RHS中的\1
插入在组1中捕获的值,并用变量值对$repl
进行插值,然后插入"
。
g
执行多次搜索和替换。
在current scenario中,当所有替换值均为字母数字或浮点数时,动态替换不需要任何特殊的预处理。否则,如果替换字符串可以包含任何个字符,请考虑使用these techniques。