0

someStringsomeWord が含まれているかどうかを確認しようとしましたが、機能しません:

String someString = "lazy cat";

someString.matches("^.*\\bazy\\b.*$");//do not matches "azy"

ここで何が問題なのですか?

4

3 に答える 3

2

このように使用するのはどうですか:-

Pattern p = Pattern.compile("Your string");
Matcher m = p.matcher(inputString);
while (m.find()) {
   String matched = m.group(1);
   // Do something
}

編集:- 文字列を見た後:-

String someString = "lazy cat";
someString.matches("^.*azy.*$");
于 2013-09-09T20:44:26.403 に答える
2

\bは単語境界を意味します。これは、部分文字列として検索するのではなく、単語azy1を検索していることを意味します。azy

削除\bするだけで、期待される結果が得られます。

someString.matches("^.*azy.*$");

ただし、部分文字列のみを検索する場合、正規表現を使用するのは非効率的です。String.containsこのようなユースケースの標準的な代替手段は次のとおりです。

someString.contains("azy");

脚注

単語は (少なくとも 1 つの)単語文字のシーケンスとして定義され、その前後に単語文字がありません。

単語の文字は、デフォルト設定では として定義されてい[a-zA-Z0-9_]ます。

于 2013-09-09T20:46:30.147 に答える
1

単語の境界で囲まazyれているため、前後にまたはのような単語文字を入れることはできません。 \ba-z A-Z 0-9_

于 2013-09-09T20:47:34.450 に答える