¿Podría alguien explicar las diferencias entre los dos? ¿Cuál sería mejor aprender en este momento? ¿Cómo se transferiría el conocimiento de uno a otro y viceversa?Boost.Regex vs C++ 11 Regex
Respuesta
La biblioteca de regex boost lo convirtió en C++ 0x, así que supongo que se eliminará lentamente del impulso. Sin embargo, usar boost es bueno porque todavía puedes usarlo con compiladores sin compatibilidad con C++ 0x. Entonces realmente depende de ti.
Sí, pero ¿puede uno migrar un Boost.Regex-based program to C++ 11 Regex con un simple 's/boost ::/std ::/g'? –
@Rob: imagino que eso depende de si está usando la compatibilidad con ICU de Boost.Regex. – ildjarn
Una diferencia importante es que C++ 11 no proporciona la sintaxis de Perl para las expresiones regulares. Por lo tanto, si tiende a usar la sintaxis de Perl, debe usar la biblioteca Boost :: Regex.
Sí, existe una sintaxis de Perl para regex: existe ECMAScript regex y ECMAScript regex es lo mismo que Perl regex http://ecma-international.org/ecma-262/5.1/#sec-15.10 – BenjaminB
@ Ubiquité no es correcto. El enlace que proporcionó dice "modelado después". La [propuesta de C++ TR1 para
@PatrickNiedzielski: Tiene razón, desafortunadamente Boost.Regex definió 'perl' como 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
Al menos en Visual Studio 2013 este y los nombres relacionados (cmatch, regex_match) son los mismos en ambos espacios de nombres. También tienen la misma interfaz (¿o similar?).
Así que puede simplemente cambiar el espacio de nombres y se compilará el mismo código con otra expresión regular sin previo aviso y sin errores. Y debería funcionar igual por supuesto.
P.S. Preferiría std :: regex ya que es parte de C++ 11 y boost :: regex es una biblioteca de terceros. Estoy seguro de que unos años más tarde, boost eliminará el soporte para boost :: regex.
- 1. C++ 11 regex: comprobando si la cadena comienza con regex
- 2. C++ 11 regex_token_iterator
- 3. Ruby Regex vs Python Regex
- 4. regex: boost :: xpressive vs boost :: regex
- 5. Estándar Regex vs python regex discrepancia
- 6. Matrices estáticas VS. matrices dinámicas en C++ 11
- 7. No coincide con C++ 11 expresiones regulares
- 8. ¿Por qué Boost.Regex no encuentra coincidencias múltiples en una cadena?
- 9. boost :: regex vs std :: regex - no se puede encontrar el método empty()?
- 10. ¿Se puede usar Boost.Regex para analizar una secuencia?
- 11. C++ 11 semántica "automática"
- 12. Delegado en C++ 11
- 13. C++ 11 macro predefinida
- 14. C++ 11 std :: array
- 15. C++ 11 error enable_if
- 16. Regex plus vs star difference?
- 17. Python - REGEX único vs multilínea
- 18. string.match (regex) vs regex.match (cadena)
- 19. Javascript Regex: Cómo llegar `1` y no` 11`
- 20. "borrar" copia ctor/asignación en C++ 11
- 21. C++ 11 thread_local palabra clave compatible en visual studio 11
- 22. las plantillas de expresión y C++ 11
- 23. ¿Cómo actualizar a C++ 11?
- 24. clang ++ invocación de C++ 11
- 25. C++ 11: ¿un nuevo idioma?
- 26. C++ 11 lambda en decltype
- 27. C++ 11 inicializar el mapa
- 28. C++ 11 vector push_back ambigua
- 29. C++ 11 future_status :: diferida no
- 30. C++ 11 alternativa a localtime_r
Aprender de forma estándar nunca es malo. –
Tenga cuidado con la Biblioteca estándar C++ 11 Regex, porque todavía no está completamente implementado por GCC: http://stackoverflow.com/questions/4716680/c0x-regex-in-gcc –