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

问题描述 投票:0回答:1

我试图了解RegEx并且我有一个我想要替换的变量。

该变量初始化如下:

name = ""和我想要一个正则表达式用""取代"personName"

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

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

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

regex sed regex-group
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.