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