matcher
をJavaで使用する動作が不思議です。Javaが正規表現を使用して文字列内の値を検索
私はコンパイルしたパターンを持っていますが、マッチャーの結果を実行すると、なぜ特定の値が欠けているのか理解できません。
マイコード:
String str = "star wars";
Pattern p = Pattern.compile("star war|Star War|Starwars|star wars|star wars|pirates of the caribbean|long strage trip|drone|snatched (2017)");
Matcher matcher = p.matcher(str);
while (matcher.find()) {
System.out.println("\nRegex : " matcher.group());
}
私はそれが私のパターンであるように右である「星の戦争」で打撃を受けます。
しかし、私はヒットとして「スターウォーズ」を取得しないと、なぜ私のパターンの一部であるか分からない。
「勝ち」にマッチし、残りはチェックされていない交互のグループの最初の選択肢。 「星の戦争」が一致すると、テキストが消費され、それ以上のパスはありません。それは期待される。どのような振る舞いが必要ですか? –
すべてのヒットを返す方法はありますか? –
長いパターンの交互パターンではなく、パターンごとにパターンを個別にチェックする必要があります。 – NAMS