Argomento precedente: Ripetizioni non-greedyArgomento successivo: Parentesi di tipo non-marking


Parentesi

Le parentesi servono a due scopi: raggruppare elementi in una sottoespressione e segnalare che cosa ha generato la corrispondenza. Ad esempio, l'espressione "(ab)*" corrisponde a tutte le stringhe "ababab". Gli algoritmi corrispondenti regex_match e regex_search richiedono ognuno un'istanza di match_results che segnali la causa della corrispondenza. Alla chiusura di tali funzionalità, match_results contiene informazioni sia sulla corrispondenza dell'intera espressione, sia sulla corrispondenza di ogni sottoespressione. Nell'esempio precedente, match_results[1] conterrebbe una coppia di iteratori che indicano "ab" finale della stringa corrispondente. Le sottoespressioni possono corrispondere a stringhe null. Se una sottoespressione non fa parte di una corrispondenza, ad esempio fa parte di un'alternativa che non viene accettata, entrambi gli iteratori restituiti per quella sottoespressione indicano la fine della stringa di input, e il parametro corrispondente per quella sottoespressione è false. Le sottoespressioni vengono indicizzate da sinistra verso destra a partire da 1, la sottoespressione 0 è l'intera espressione.