Mega Code Archive

 
Categories / Java / Regular Expressions
 

Getting the Indices of a Matching Group in a Regular Expression

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main {   public static void main(String[] argv) throws Exception {     CharSequence inputStr = "abbabcd";     String patternStr = "(a(b*))+(c*)";     Pattern pattern = Pattern.compile(patternStr);     Matcher matcher = pattern.matcher(inputStr);     boolean matchFound = matcher.find();     if (matchFound) {       // Get all groups for this match       for (int i = 0; i <= matcher.groupCount(); i++) {         // Get the group's captured text         String groupStr = matcher.group(i);         // Get the group's indices         int groupStart = matcher.start(i);         int groupEnd = matcher.end(i);         // groupStr is equivalent to         inputStr.subSequence(groupStart, groupEnd);       }     }   } }