我需要在我的sql腳本(即Oracle外部連接表達式)中查找「(+)」的出現次數。認識到「+」,「(」和「)」都是特殊字符的正則表達式,我想:grep:匹配文字「+」
grep "\(\+\)" *
現在這並返回「(+)」,但其他線路出現爲好。 (與在同一行中打開和關閉括號看似什麼)回顧括號僅用於擴展的grep特殊,我想:
grep "(\+)" * grep "(\\+)" *
包含這些只返回行的兩個「()」。因此,假設「+」無法逃脫,我嘗試過的老把戲:
grep "([+])" *
工程。我用非正則表達式工具交叉檢查結果。
問題:有人可以解釋「+」字符到底是怎麼回事嗎?在「(+)」上匹配的方式有多少?
(我用cygwin的grep命令。)
編輯:謝謝你的解決方案。 - 現在我看到,根據Bruno提到的GNU grep手冊,「\+
」當用於基本的表達式時,它給出了「+」其擴展的含義,因此匹配一個或多個「(」s之後是「)」。並且在我的文件中總是「()」。
我只是想的grep -E「\(\ + \)「*,這是有效的。所以這似乎不是一個殼問題。 cygwin的非擴展正則表達式可能會被打破嗎? – 2008-10-09 19:30:50
太糟糕了,只有一個答案可以接受。布魯諾通過它走過我,但你也是對的。我忘記了「+」也僅適用於擴展正則表達式。 – 2008-10-09 19:50:09