someString
someWord が含まれているかどうかを確認しようとしましたが、機能しません:
String someString = "lazy cat";
someString.matches("^.*\\bazy\\b.*$");//do not matches "azy"
ここで何が問題なのですか?
このように使用するのはどうですか:-
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.*$");
\b
は単語境界を意味します。これは、部分文字列として検索するのではなく、単語azy
1を検索していることを意味します。azy
削除\b
するだけで、期待される結果が得られます。
someString.matches("^.*azy.*$");
ただし、部分文字列のみを検索する場合、正規表現を使用するのは非効率的です。String.contains
このようなユースケースの標準的な代替手段は次のとおりです。
someString.contains("azy");
脚注
単語は (少なくとも 1 つの)単語文字のシーケンスとして定義され、その前後に単語文字がありません。
単語の文字は、デフォルト設定では として定義されてい[a-zA-Z0-9_]
ます。
単語の境界で囲まazy
れているため、前後にまたはのような単語文字を入れることはできません。 \b
a-z
A-Z
0-9
_