2016-03-28 15 views
2

次のregexをgrepコマンドに書いて、javaExceptionを含むディレクトリ内のSQLExceptionのすべてのcatch文を見つけました。Grep正規表現のエラー

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

「グレップ:比類のない(または(」与えている。エラーが発生し、この正規表現はRegExr.com上で正常に動作しているこの正規表現の問題です何

+0

同上、grepを使用するときに-Pを追加することをお勧めします。Perlの正規表現は強力です。 エスケープ文字をASCII 16進コードで置き換えることをお勧めします。例:\ x28 for(、\ x29 for)。それはあまり直感的ではありませんが、それほど問題はありません。 – POW

答えて

1

\sを使用するには、あなたが(Perlの正規表現を許可する)-Pオプションを指定する必要があります:ところで

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

を、あなたの代わりに{0,}*を使用することができます。

1

grepデフォルトでBREを使用し、\(になります。?キャプチャグループ(エスケープされていない(を文字通りに解釈される)の開始

あなたは、拡張正規表現モード-Eでこれgrepを使用することができます。

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

確かに、スペースは1語のコピー/ペーストのために来ました。今修正しました。 – anubhava