指定されたパターンに一致する入力文字列内のすべての部分文字列を取得しようとしています。
例えば、
与えられた文字列: aaxxbbaxb
パターン: a[az]{0,3}b
(私が実際に表現したいのは、a で始まり b で終わるすべてのパターンですが、その間に最大 2 つのアルファベットを含めることができるということです)
私が望む正確な結果(インデックス付き):
aaxxb: インデックス 0~4
axxb: インデックス 1~4
axxbb: インデックス 1~5
axb: インデックス 6~8
しかし、 and を使用して Pattern クラスと Matcher クラスを実行するPattern.compile()
とMatcher.find()
、次のような結果しか得られません。
aaxxb : インデックス 0~4
axb : インデックス 6~8
これは私が使用したコードです。
Pattern pattern = Pattern.compile("a[a-z]{0,3}b", Pattern.CASE_INSENSITIVE);
Matcher match = pattern.matcher("aaxxbbaxb");
while (match.find()) {
System.out.println(match.group());
}
pattern に一致するすべての文字列を取得するにはどうすればよいですか?
もちろん、効率的である限り、Pattern クラスと Matcher クラスを使用する必要はありません :)