正则表达式替换捕获组的表达式

时间:2018-09-17 10:45:07

标签: regex sed regex-group

我正在尝试RegEx,我有一个变量要替换。

变量初始化如下:

name = "",我希望使用正则表达式将""替换为"personName"

到目前为止,我有以下RegEx:

^(name).*?("")\2设置捕获组,并且我选择了第2组,但是我不确定如何插入替换文本。

注意:这将与脚本中的sed一起使用。

1 个答案:

答案 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