我在grep命令中編寫了以下正則表達式,以在包含java文件的目錄中查找SQLException的所有catch語句。錯誤Grep正則表達式
catch\s{0,}\(s{0,}SQLException
它給的「grep:無與倫比(或(」錯誤此正則表達式是在RegExr.com工作正常,這有什麼正則表達式的問題
我在grep命令中編寫了以下正則表達式,以在包含java文件的目錄中查找SQLException的所有catch語句。錯誤Grep正則表達式
catch\s{0,}\(s{0,}SQLException
它給的「grep:無與倫比(或(」錯誤此正則表達式是在RegExr.com工作正常,這有什麼正則表達式的問題
要使用\s
,你需要指定-P
選項(允許Perl的正則表達式):
grep -P 'catch\s{0,}\(\s{0,}SQLException'
順便說一句,你可以使用*
代替{0,}
。
grep
使用BRE
默認和\(
變?啓動捕獲的組(未逸出(
是字面上)
可以使用此grep
具有延長的正則表達式模式-E
:
grep -E 'catch[[:blank:]]*\([[:blank:]]*SQLException' file.log
確實,空間是由於複製/粘貼一個單詞而引起的。現在修好,謝謝。 – anubhava
同上,在使用grep時添加-P是一個好主意,Perl正則表達式功能強大。 我想建議你使用ASCII十六進制代碼來替換轉義的字符。例如:\ x28代表(,\ x29 for)。雖然它不那麼直觀,但也不太成問題。 – POW