Voglio un modello di espressione regolare per trovare un numero intero nella stringa, ma non galleggiare (con punto decimale come o "" Così, per stringa "":.regex: trovare intero ma non galleggiano
abc111.222dfg333hfg44 .55
si deve solo trovare:
ho creato schema di espressione regolare:
(?<!\\d[\\.,]|\\d)\\d+(?![\\.,]\\d+|\\d)
ma non riesce quando si utilizza l'espressione regolare in C++ STL. Si getta eccezione:
Unhandled exception at at 0x76AF4598 in xxxxxx.exe: Microsoft C++ exception: std::regex_error at memory location 0x00C1F218.
ma funziona bello in classe C# Regex
UPDATE:
My Code:
smatch intMatch;
regex e1("(?<!\\d[\\.,]|\\d)\\d+(?![\\.,]\\d+|\\d)");
string s("111.222dfg333hfg44.55");
regex_search (s, intMatch, e1);
ma genera un'eccezione in linea:
regex e1("(?<!\\d[\\.,]|\\d)\\d+(?![\\.,]\\d+|\\d)");
UPDATE 2:
Entrambe le risposte sono corrette, ma per C++ regex STL Toto si lavora meglio.
Il problema risiede quasi sicuramente nel codice, ma non ne è stato mostrato nessuno, quindi è impossibile rispondere. –
La sintassi di .NET Regular Expression è diversa dalle espressioni regolari STL. – Dai
Onestamente, per un problema come quello che descrivi, un semplice parser di macchina dello stato "character-eater" sarebbe più veloce da scrivere e più facile da capire, e indubbiamente più veloce anche nell'esecuzione. – Dai