The java.util.regex.MatcheResult interface provides methods to retrieve the results of a match.
You can get an object of this interface using the toMatchResult() method of the Matcher class. This method returns a MatchResult object which represents the match state of the current matcher.
The groupCount() method of this interface counts and returns the number of groups in the regular expression of the current object.
Example
import java.util.Scanner; import java.util.regex.MatchResult; import java.util.regex.Matcher; import java.util.regex.Pattern; public class GroupCount { public static void main( String args[] ) { String regex = "(.*)(\\d+)(.*)"; //Reading input from user Scanner sc = new Scanner(System.in); System.out.println("Enter input text: "); String input = sc.nextLine(); //Instantiating the Pattern class Pattern pattern = Pattern.compile(regex); //Instantiating the Matcher class Matcher matcher = pattern.matcher(input); //verifying whether a match occurred if(matcher.find()) { System.out.println("Match found"); } MatchResult res = matcher.toMatchResult(); int count = res.groupCount(); System.out.println("No.of groups: "+count); } }
Output
Enter input text: This is a sample Text, 123 Match found No.of groups: 3