我在一个系统上看到了一个脚本,我必须在使用这个sed regexp的几个(旧)平台上进行维护:
sed 's/\([\\\x27"]\)key\1: \1value\1//'
\\\x27
是一种逃避单引号的方法。所以更可读的形式的正则表达式是:
\(['"]\)key\1: \1value\1
它将第一个gruop与'
或"
匹配,然后在匹配regexp中使用\1
来匹配类似的引用。所以它将匹配所有行:
"key": "value"
'key': 'value'
现在这是一个很好的解决方案。但我担心这可能不会出现在旧的sed版本上。
所以问题是:这个功能如何被称为,以及支持/可用的方式是什么?
答案 0 :(得分:1)
此功能称为“反向引用”,我认为它是正则表达式的标准功能。根据{{3}},所有sed
实施都应该支持它。
组也可以嵌套
\(like \(this\) is here\)
并且可以包含 任何有效的RE。反向引用重复特定内容 组,使用反斜杠和数字(1-9)为每个对应 组。换句话说,/\(pom\)\1/
是另一种写作方式/pompom/
。