2012-01-08 9 views
4

Java Regexpで\b(これは単語の最後の文字を意味します)を試しましたが、これは機能しません。Java Regexの問題 b

何が問題ですか?

+2

注:「\ b」は「単語の最後の文字」ではなく「単語と単語以外の境界」を意味します。 – Howard

+0

正規表現を修正しても( '' a \\ b "'、 '\ b'についての他のコメントを参照)、あなたのグループは常に' a'のみを含んでいます。それで、あなたは何をしたいですか? – fge

答えて

15

Javaでは、"\b"はバックスペース文字(char 0x08)です。これは、正規表現で使用されたときに、バックスペースリテラルと一致します。

あなたはJavaでこのように、バスクスラッシュをエスケープすることでコード化された正規表現a\b、欲しい:ところで、あなたは部分的にしか正しい正規表現\bの意味についてです

"a\\b" 

を - それは実際に意味 "単語境界 "(単語の開始または終了のいずれか)。

+1

*そして、 '\ b'が予期しない場所(' | ':'Ü| bertr |ä| ger | 'によって可視化されます)でマッチするところで、非ASCIIワードで失敗する可能性があります(JDK 7を使用しない限り)。 –

3

Java文字列のリテラルバックスラッシュはエスケープする必要があるため、正規表現\bはJava文字列として"\\b"になります。

+0

「正規表現」ではありません。 – Lion

+0

ああ...何?正規表現=正規表現。 – m0skit0

+0

'\\'と '\ b'はJavaのエスケープシーケンス(文字)です。 – Lion