【发布时间】:2013-05-19 02:53:32
【问题描述】:
我有两个字符串,比如 foo_bar 和 foo_abc_bar。我想匹配他们两个,如果第一个匹配,我想用 = 符号强调它。所以,我的猜测是:
echo 'foo_abc_bar' | sed -r 's/(foo).*(abc)?.*(bar)/\1=\2=\3/g'
> foo==bar
或
echo 'foo_abc_bar' | sed -r 's/(foo).*((abc)?).*(bar)/\1=\2=\3/g'
> foo==
但正如上面的输出所示,它们都不起作用。
我如何指定一个可选组,如果字符串包含它则匹配,否则就跳过?
【问题讨论】:
-
为什么在表达式中使用
.*,下划线可以替换成任意字符串吗?
标签: regex string bash sed regex-group