KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am using a while(matcher.find()) to loop through all of the matches of a Pattern. For each instance or match of that pattern it finds, I want to replace matcher.group(3) with some new text. This text will be different for each one so I am using matcher.appendReplacement() to rebuild the original string with the new changes as it goes through. However, appendReplacement() replaces the entire Pattern instead of just the group. How can I do this but only modify the third group of the match rather than the entire Pattern? Here is some example code: 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)); } but I would like to do something like this (obviously this doesn't work). ... while(matcher.find()){ matcher.group(3).appendReplacement(buffer, processTheGroup(matcher.group(3)); } Something like that, where it only replaces a certain group, not the whole Pattern. EDIT: changed the regex example to show that not all of the pattern is grouped.
Tags (comma-separated)
Save Edits
Cancel