-1

これが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^)

しかし、それは機能しません。どうすればこのようなものを捕まえることができますか?

4

3 に答える 3

3

Javaでは、matchesメソッドは文字列全体を照合しようとするためです。find代わりに必要です:

Pattern.compile("\\A[/0-9]").matcher("2 z CEA|B2 z E^").find()

のJavadocPattern.matches()のJavadocMatcher.matches()、およびのJavadocMatcher.find()を参照してください。)

于 2012-10-25T00:31:55.833 に答える
1

文字列全体ではなく、最初の数字2にのみ一致するため、falseです。

于 2012-10-25T00:33:42.437 に答える
0

問題は、.matches()文字列全体と比較されるため、パターンが文字列と一致する必要があることです。これを試して:

Pattern.matches("\\A[/0-9].*?","2 z CEA|B2 z E^")

.*?、より多くのものを行の最後に置くことを可能にします。*?数量詞にを使用すると、最小文字数が選択されます。

于 2012-10-25T00:36:20.593 に答える