Java Regex - Acquisizione di gruppi

La cattura di gruppi è un modo per trattare più personaggi come una singola unità. Vengono creati inserendo i caratteri da raggruppare all'interno di una serie di parentesi. Ad esempio, l'espressione regolare (cane) crea un singolo gruppo contenente le lettere "d", "o" e "g".

I gruppi di cattura vengono numerati contando le loro parentesi di apertura da sinistra a destra. Nell'espressione ((A) (B (C))), ad esempio, ci sono quattro di questi gruppi:

  • ((A)(B(C)))
  • (A)
  • (B(C))
  • (C)

Per scoprire quanti gruppi sono presenti nell'espressione, chiama il metodo groupCount su un oggetto matcher. Il metodo groupCount restituisce un fileint mostrando il numero di gruppi di cattura presenti nel modello del matcher.

C'è anche un gruppo speciale, il gruppo 0, che rappresenta sempre l'intera espressione. Questo gruppo non è incluso nel totale riportato da groupCount.

Esempio

L'esempio seguente illustra come trovare una stringa di cifre dalla stringa alfanumerica data:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexMatches {
   public static void main( String args[] ) {
      // String to be scanned to find the pattern.
      String line = "This order was placed for QT3000! OK?";
      String pattern = "(.*)(\\d+)(.*)";

      // Create a Pattern object
      Pattern r = Pattern.compile(pattern);

      // Now create matcher object.
      Matcher m = r.matcher(line);
      
      if (m.find( )) {
         System.out.println("Found value: " + m.group(0) );
         System.out.println("Found value: " + m.group(1) );
         System.out.println("Found value: " + m.group(2) );
      } else {
         System.out.println("NO MATCH");
      }
   }
}

Questo produrrà il seguente risultato:

Produzione

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT300
Found value: 0