Using a Non-Capturing Group in a Regular Expression

By default, a group captures text (see Capturing Text in a Group in a Regular Expression). In some cases, a group is needed but there is no need to capture the text. A non-capturing group should be used to improve performance. A non-capturing group starts with (?:.
String inputStr = "abbabcd"; String patternStr = "(a(?:b*))+(c*)"; // (?:b*) is a non-capturing group // Compile and use regular expression 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++) { String groupStr = matcher.group(i); } // group 0: abbabc // group 1: ab // group 2: c }

Post a comment

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image. Ignore spaces and be careful about upper and lower case.