これがJavaで間違っているのはなぜですか?
Pattern.matches("\\A[/0-9]","2 z CEA|B2 z E^")
編集:私は試しました:(新しい行もキャッチできるように)
Pattern.matches("\\A[/0-9][.\\s]*?","2 z\n CEA|B2 z E^)
しかし、それは機能しません。どうすればこのようなものを捕まえることができますか?
Javaでは、matches
メソッドは文字列全体を照合しようとするためです。find
代わりに必要です:
Pattern.compile("\\A[/0-9]").matcher("2 z CEA|B2 z E^").find()
(のJavadocPattern.matches()
、のJavadocMatcher.matches()
、およびのJavadocMatcher.find()
を参照してください。)
文字列全体ではなく、最初の数字2にのみ一致するため、falseです。
問題は、.matches()
文字列全体と比較されるため、パターンが文字列と一致する必要があることです。これを試して:
Pattern.matches("\\A[/0-9].*?","2 z CEA|B2 z E^")
は.*?
、より多くのものを行の最後に置くことを可能にします。*?
数量詞にを使用すると、最小文字数が選択されます。