2016-08-31 5 views
-1

次のコードは、trueを返すと信じているときにfalseを返します。なぜ誰かが私に言うことができますか? これはjava.util.regex.Patternを使って正規表現を解析しています。文字列リテラルで

Pattern.compile("^\|:\|$".matcher("| |").matches(); 
+0

「デザインパターン」をしたいように見える

はポイントが 'マッチは()'完全な文字列の一致を必要とすることである –

+0

絶対に「正規表現パターン」ではありません。 –

+1

なぜ:とスペース?私はこの試みの論理を得ていない。あなたは '' \ \ |。* \\ | $ "'をしたかったのですか? –

答えて

2

\\\のようにエスケープする必要があります。

何かを一致させたい場合は:ではなく.*を使用してください。あなたはJavaでmatchesメソッドを使用する場合

は、あなたはそれが文字列全体にマッチした場合にのみ、この機能がtrueを返すなどの文字列の境界^$を追加する必要はありません。あなたは

Pattern.compile("\\|.*\\|").matcher("| |").matches(); 
+0

私はあなたが '' \\ |。* \\ | "'を意味すると思います – revo

+0

@revoはい、ありがとう(違いを見るために私をしばらく持ちました...この文字列エスケープはとても痛いです...) –

+1

私はdidn私はそれが有用かどうかまだ不明です(この質問は明らかに正確な重複IMOではありません) –

関連する問題