The Java Developers Almanac 1.4


Order this book from Amazon.

   
Home > List of Packages > java.util.regex  [26 examples] > Groups  [5 examples]

e438. Using a Non-Capturing Group in a Regular Expression

By default, a group captures text (see e436 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
    }

 Related Examples
e436. Capturing Text in a Group in a Regular Expression
e437. Getting the Indices of a Matching Group in a Regular Expression
e439. Using the Captured Text of a Group within a Pattern
e440. Using the Captured Text of a Group within a Replacement Pattern

See also: Flags    Lines    Paragraphs    Searching and Replacing    Tokenizing   


© 2002 Addison-Wesley.