6

私はJavaの正規表現を扱っています。

ああ、私は本当にPerlが恋しいです!! Java の正規表現はとても難しいです。

とにかく、以下は私のコードです。

oneLine = "{\"kind\":\"list\",\"items\"";
System.out.println(oneLine.matches("kind"));

画面に「true」が表示されると思っていたのですが、「false」しか表示されませんでした。

コードの何が問題になっていますか? どうすれば修正できますか?

前もって感謝します!!

4

3 に答える 3

8

String#matches()パラメータとして正規表現を取り、アンカーは暗黙的です。したがって、正規表現パターンは文字列の最初から最後まで一致します。

文字列が で始まらない"kind"ため、 が返されますfalse

さて、あなたの現在の問題によると、ここで使用する必要はないと思いますregex。メソッドを使用するだけString#contains()で問題なく動作します: -

oneLine.contains("kind");

または、 を使用する場合はmatches、完全な文字列に一致するように正規表現を作成します: -

oneLine.matches(".*kind.*");
于 2013-01-30T21:01:17.950 に答える
4

このメソッドは、文字列全体.matchesに一致することを目的としています。したがって、次のようなものが必要です。

.*kind.*

デモ: http://ideone.com/Gb5MQZ

于 2013-01-30T20:59:52.340 に答える
2

^Matches は、文字列全体 (暗黙的および$アンカー)との一致を試みcontains()ます。文字列の一部をチェックするために使用します。

于 2013-01-30T20:59:40.137 に答える