ho scritto il seguente semplice esempio:intesa C++ regex con un semplice esempio
#include <iostream>
#include <string>
#include <regex>
int main()
{
std::string str("1231");
std::regex r("^(\\d)");
std::smatch m;
std::regex_search(str, m, r);
for(auto v: m) std::cout << v << std::endl;
}
e un po 'confusa dal suo comportamento. Se ho compreso correttamente lo scopo dello match_result
da there, l'unico 1
avrebbe dovuto essere stampato. Effettivamente:
caso di successo, non è vuoto e contiene una serie di sub_match oggetti: il primo elemento sub_match corrisponde all'intera partita, e, se l'espressione regex conteneva sottoespressioni da abbinare ([...])
la stringa passata alla funzione non corrisponde alla espressione regolare, pertanto si dovrebbe non hanno avuto the entire match
.
Cosa mi sono perso?
Si ottiene sempre * l'intera corrispondenza *, ma * l'intera corrispondenza * non si adatta * all'intera stringa * che si adatta * all'intera espressione regolare *. – Galik