1
我用SED练一些命令时,我用以下命令的输出困惑:匹配零个或多个字符在sed
echo 'first:second' | sed 's_[^:]*_(&)_g'
我的问题是:为什么这个命令只包住字符串“第一“和”第二“括号?
由于我在我的正则表达式中指定了“零或更多非冒号”,不应该将冒号也包裹起来吗?
请说明。
我用SED练一些命令时,我用以下命令的输出困惑:匹配零个或多个字符在sed
echo 'first:second' | sed 's_[^:]*_(&)_g'
我的问题是:为什么这个命令只包住字符串“第一“和”第二“括号?
由于我在我的正则表达式中指定了“零或更多非冒号”,不应该将冒号也包裹起来吗?
请说明。
您使用
[^:]
其搜索除了:
所有字符。 所以你遇到的是正常的配合。
冒号本身既不是“零不冒号”(因为它是一个长度为1的字符串)也不是“更多非冒号”(因为它是冒号),所以显然模式不匹配。 – chris 2013-05-04 06:49:42
你会期待什么结果呢?这听起来像你期待'(第一)(:)(第二)',但显然不会发生。或者你的意思是(第一)():(第二)()'? – 2013-05-04 06:49:43
嗨克里斯。感谢您的启发。我明白了代码的意义! – LanceHAOH 2013-05-05 06:46:47