while(matcher.find())
パターンのすべての一致をループするためにa を使用しています。matcher.group(3)
見つかったパターンのインスタンスまたは一致ごとに、新しいテキストに置き換えたいと思います。このテキストはそれぞれ異なるためmatcher.appendReplacement()
、元の文字列を新しい変更で再構築するために使用しています。ただし、appendReplacement()
グループだけでなくパターン全体を置き換えます。
パターン全体ではなく、一致の 3 番目のグループのみを変更して、これを行うにはどうすればよいですか?
コード例を次に示します。
Pattern pattern = Pattern.compile("THE (REGEX) (EXPRESSION) (WITH MULTIPLE) GROUPS");
Matcher matcher = pattern.matcher("THE TEXT TO SEARCH AND MODIFY");
StringBuffer buffer = new StringBuffer();
while(matcher.find()){
matcher.appendReplacement(buffer, processTheGroup(matcher.group(3));
}
しかし、私はこのようなことをしたいと思います(明らかにこれはうまくいきません)。
...
while(matcher.find()){
matcher.group(3).appendReplacement(buffer, processTheGroup(matcher.group(3));
}
パターン全体ではなく、特定のグループのみを置き換えるようなものです。
編集:正規表現の例を変更して、すべてのパターンがグループ化されているわけではないことを示しました。