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