Mi piacerebbe trovare tutte le possibili corrispondenze di regex, come è possibile?Come ottenere tutte le possibili corrispondenze di std :: regex
regex rx("(2|25)");
string s = "2225";
for (sregex_iterator it(s.begin(), s.end(), rx), end; it != end; ++it) {
cout << it->position() << ": " << it->str() << endl;
}
Dà uscita:
0: 2
1: 2
2: 25
ma non trova terzo 2: 2
esattamente. Preferisco usare regex a causa della complessità O(n)
per la ricerca di più token contemporaneamente.
UPDATE:
Forse divisi lista di token per le liste non prefixable e creare più espressioni regolari? Ad esempio: (2|4|25|45|251|455|267)
=>(2|4)
, (25|45|267)
, (251|455)
Questa crescerà la complessità a qualcosa di simile O(n log(m))
UPDATE 2:
prega, di fornire a breve algoritmo di STL a base di scissione vettore token per i vettori non prefixable a rispondi a questa domanda.
Se si desidera avere corrispondenze solo su '2', perché si usa' | 25' come parte di la tua espressione regolare? – Phylogenesis
@Phylogenesis Voglio scoprire tutte le 4 corrispondenze per 'O (n)' complessità :) – k06a
Credo che non si possa eguagliare lo stesso personaggio in due gruppi di corrispondenza diversi (ad esempio non sarà possibile abbinare il '2' come parte di '25' ma anche da solo). – Phylogenesis