operador de match_results[] en C++ STL

Match_results ::operator[] es una función construida en C++ que solía obtener la i-ésima coincidencia en el objeto match_result. Da la referencia a la coincidencia en la posición dada dentro del operador.
Sintaxis: 
 

smatch_name[N]

Note: smatch_name is an object of match_results class.

Parámetros: Acepta un único parámetro N que especifica el número de Match. Es menor que match_results::size. El número de coincidencia 0 representa la expresión coincidente completa. Los números de coincidencia subsiguientes identifican las subexpresiones, si las hay. La integral pasada es un tipo de integral sin signo.
Valor de retorno: Devuelve la referencia directa a la coincidencia en la N-ésima coincidencia. 
Nota: el primer elemento siempre contiene la coincidencia de expresiones regulares completa, mientras que los demás contienen el grupo de captura particular .
Los siguientes programas ilustran la función anterior. 
Programa 1: 
 

CPP

// CPP program to illustrate
// match_results operator[] in C++
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    string s("Geeksforgeeks");
    regex re("(Geeks)(.*)");
 
    smatch match;
 
    regex_match(s, match, re);
 
    // use of operator[]--> returns the
    // reference to the match at i-th position
    cout << "Matches are:" << endl;
    for (int i = 0; i < match.size(); i++) {
        cout << "match " << i << " is " << match[i] << endl;
    }
}
Producción: 

Matches are:
match 0 is Geeksforgeeks
match 1 is Geeks
match 2 is forgeeks

 

Programa 2: 
 

CPP

// CPP program to illustrate
// match_results operator[] in C++
// Find maximum length
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    string s("Geeksforgeeks");
    regex re("(Ge)(eks)(.*)");
 
    smatch match;
 
    regex_match(s, match, re);
 
    int max_length = 0;
    string str;
 
    // Since the first match is the whole string we do not consider it.
    for (int i = 1; i < match.size(); i++) {
        if (match.length(i) > max_length) {
            str = match[i];
            max_length = match.length(i);
        }
    }
 
    cout << "max-length sub match is " << str
         << " with a length of " << max_length << endl;
    return 0;
}
Producción: 

max-length sub match is forgeeks with a length of 8

 

Publicación traducida automáticamente

Artículo escrito por Harsha_Mogali y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *