2

\bJava Regex で単語区切り文字として使用するのが困難です。

為に

text = "/* sql statement */ INSERT INTO someTable";

Pattern.compile("(?i)\binsert\b"); 一致するものが見つかりません

Pattern insPtrn = Pattern.compile("\bINSERT\b");一致するものが見つかりません

しかし

Pattern insPtrn = Pattern.compile("INSERT"); 一致を見つける

私が間違っていることは何ですか?

4

2 に答える 2

5

Java で正規表現を記述するときは、必ずすべてのバックスラッシュをエスケープする必要があるため、正規表現は Java 文字列に\bINSERT\bなります。"\\bINSERT\\b"

バックスラッシュをエスケープしない場合\b、文字列リテラルの はバックスペース文字として解釈されます。

于 2012-10-11T16:23:15.687 に答える
2

代わりにこれを使用してください: -

Pattern insPtrn = Pattern.compile("\\bINSERT\\b")

\b余分なバックスラッシュでエスケープする必要があります..

于 2012-10-11T16:23:51.427 に答える