Ho un problema con boost::regex::regex_match
. Lavoro con attivato BOOST_REGEX_MATCH_EXTRA
.Boise regex. Gruppo con nome in due parti
Quello che ho:
(questo è un semplice esempio del mio problema, non è un vero e proprio compito)
string input1= "3 4 5";
string input2= "3 4 7";
Quello che voglio ottenere:
list output1= [3 4 5];
list output2= []; //not matched
regex:
(questo sta funzionando bene)
((?<group>[0-6])[ ]?)*
output1: what["group"]=5
e what["group"].captures()= [3, 4, 5]
output2: not matched
Il p roblem is:
Ho bisogno di raccogliere dati da più di uno parte di regex a un gruppo.
ho provato:
((?<group>[0-6])[ ])*(?<group>[0-6])
output1: what["group"]=4
e what["group"].captures()=[3, 4]
output2: not matched
OK, ho capito. Non vede la seconda dichiarazione di gruppo.
ho provato:
((?<group>[0-6])[ ])*(?&group)
output1: what["group"]=4
e what["group"].captures()= [3, 4, 4]
output2: not matched
- Ma ciò che questo? Da dove viene il secondo 4? Controlla lo schema "di gruppo", perché il primo esempio corrisponde, ma il secondo no. Ma raddoppia l'ultimo valore trovato invece di salvare nuovo. Perché? Forse ho dimenticato di accendere alcune bandiere?
- E c'è un altro modo per ottenere in un gruppo dati da parte diversa dell'espressione regolare?
devo più di un gruppo, in modo da token_iterator non mi può aiutare.
e di espressione dovrebbe essere configurato nel file di configurazione. statico Xpressive non può essere utilizzato.
No, non si può farcire due parti diverse di una stringa di destinazione in un unico gruppo di cattura - almeno non senza catturare anche tutto tra. –