【发布时间】:2013-04-28 14:12:19
【问题描述】:
当我对以下命令的输出感到困惑时,我正在使用 sed 练习一些命令:
echo 'first:second' | sed 's_[^:]*_(&)_g'
我的问题是:为什么这个命令只用括号括起来字符串“first”和“second”?
既然我在正则表达式条件中指定了“零或更多非冒号”,难道不应该也换行冒号吗?
请澄清。
【问题讨论】:
-
冒号本身既不是“零个非冒号”(因为它是长度为 1 的字符串)也不是“更多非冒号”(因为它是一个冒号),所以很明显该模式不匹配。
-
您所期望的结果是什么?听起来您期待
(first)(:)(second),但这显然不会发生。或者你的意思是(first)():(second)()? -
嗨,克里斯。谢谢你的开导。我现在明白代码的含义了!