2016-03-28 208 views
2

我在grep命令中編寫了以下正則表達式,以在包含java文件的目錄中查找SQLException的所有catch語句。錯誤Grep正則表達式

catch\s{0,}\(s{0,}SQLException 

它給的「grep:無與倫比(或(」錯誤此正則表達式是在RegExr.com工作正常,這有什麼正則表達式的問題

+0

同上,在使用grep時添加-P是一個好主意,Perl正則表達式功能強大。 我想建議你使用ASCII十六進制代碼來替換轉義的字符。例如:\ x28代表(,\ x29 for)。雖然它不那麼直觀,但也不太成問題。 – POW

回答

1

要使用\s,你需要指定-P選項(允許Perl的正則表達式):

grep -P 'catch\s{0,}\(\s{0,}SQLException' 

順便說一句,你可以使用*代替{0,}

1

grep使用BRE默認和\(變?啓動捕獲的組(未逸出(是字面上)

可以使用此grep具有延長的正則表達式模式-E

grep -E 'catch[[:blank:]]*\([[:blank:]]*SQLException' file.log 
+0

確實,空間是由於複製/粘貼一個單詞而引起的。現在修好,謝謝。 – anubhava