Qualcuno potrebbe spiegare le differenze tra i due? Quale sarebbe meglio imparare in questo momento? In che modo la conoscenza si trasferisce da una all'altra e viceversa?Boost.Regex vs C++ 11 Regex
risposta
La libreria di regex di boost è stata convertita in C++ 0x, quindi suppongo che verrà lentamente rimossa dal boost. Tuttavia, usare boost è bello perché puoi ancora usarlo con i compilatori senza il supporto C++ 0x. Quindi dipende solo da te.
Sì, ma si può migrare a Boost.Regex programma in C++ 11 Regex con un semplice 's/boost ::/std ::/g'? –
@Rob: Immagino che dipenda dal fatto che tu stia utilizzando il supporto per ICU di Boost.Regex. – ildjarn
Una differenza importante è che C++ 11 non fornisce la sintassi Perl per le espressioni regolari. Quindi, se tendi ad usare la sintassi Perl devi usare la libreria Boost :: Regex.
Sì, esiste la sintassi Perl per la regex: Esiste l'espressione regolare ECMAScript e l'espressione regolare ECMAScript è la stessa della regex Perl http://ecma-international.org/ecma-262/5.1/#sec-15.10 – BenjaminB
@ Ubiquité non sei corretto. Il link che hai fornito dice "modellato". La [proposta C++ TR1 per
@PatrickNiedzielski: Sei corretto, purtroppo Boost.Regex ha definito 'perl' come equivalente a' ECMAScript' http://www.boost.org/doc/libs/1_53_0/libs/regex/doc/html/boost_regex/ref/ syntax_option_type/syntax_option_type_perl.html. – kennytm
Almeno in Visual Studio 2013 questo e i relativi nomi (cmatch, regex_match) sono gli stessi in entrambi gli spazi dei nomi. Hanno anche la stessa (o simile?) Interfaccia.
Quindi è possibile modificare lo spazio dei nomi e lo stesso codice verrà compilato con un altro regex senza avvisi ed errori. E dovrebbe funzionare allo stesso modo, naturalmente.
P.S. Preferirei std :: regex dato che fa parte di C++ 11 e boost :: regex è una libreria di terze parti. Sono sicuro che pochi anni dopo, boost rimuoverà il supporto per boost :: regex.
- 1. Nessuna corrispondenza con C++ 11 regex
- 2. C++ 11 Regex Cattura gruppi per nome
- 3. char wchar_t vs vs vs char16_t char32_t (C++ 11)
- 4. C++ 11 regex_token_iterator
- 5. regex: "(^ |)" vs "(| ^)"
- 6. boost :: regex vs std :: regex - impossibile trovare il metodo empty()?
- 7. Corrispondenza "inizio riga" utilizzando libge ++ regex library (C++ 11)
- 8. copie spurie in C++ 03 libstdC++ vs C++ 11
- 9. Discordanza standard Regex vs python regex
- 10. Matrici statiche VS. array dinamici in C++ 11
- 11. campi membri const const vs constexpr in C++ 11/14?
- 12. C++ 11 Tipo di deduzione vs const char *
- 13. Come ottenere -std = C++ 11 w/libstdC++?
- 14. C# corrispondente regex a HHMMSS
- 15. Esiste un CSPRNG C++ 11?
- 16. Inizializzazione stringa C++ 11
- 17. C++ 11 std :: array
- 18. C++ 11 Destructor = delete
- 19. clang ++ C++ 11 invocazione
- 20. C++ 11 closure shared_ptr
- 21. È valido C++ 11
- 22. Controllo funzionalità C++ 11
- 23. Macro predefinita C++ 11
- 24. pahole C++ 11 supporto?
- 25. C++ 11 numeri casuali
- 26. C++ 11: esecutore universale
- 27. Delegato in C++ 11
- 28. C++ 11 initialize map
- 29. Semantica C++ 11 "auto"
- 30. C++ 11 alternativa pthread_cond_timedwait
L'apprendimento del modo standard non è mai una cosa negativa. –
Fai attenzione con la libreria standard C++ 11 Regex, perché non è ancora completamente implementato da GCC: http://stackoverflow.com/questions/4716680/c0x-regex-in-gcc –