Reemplazando boost::regex
con std::regex
ya que estamos usando gcc 4.6 en la compañía me encontré con un problema con el método empty()
de esa clase, básicamente no pasó de boost::regex
a la clase std::regex
. No estoy seguro de si esto es un problema de gcc o este método no lo convirtió en el estándar C++ 11 en absoluto, pero ese fragmento de código dependía mucho de esta característica. Entonces, la pregunta es: ¿hay alguna forma en C++ 11 std::regex
para verificar si alguna vez se estableció la expresión o debo mantener el boost::regex
por el resto de mi vida?boost :: regex vs std :: regex - no se puede encontrar el método empty()?
Respuesta
empty()
ha sido eliminado de std::regex
hace mucho tiempo. N1507 (2003-09-16) fue el documento original que sugiere su eliminación (busque "¿Qué es una expresión regular no válida/vacía?"). Este problema fue dirigido a lo que entonces era std::tr1:regex
. Se registró en las listas de problemas de LWG tr1 como el número 7.28 y contenía la siguiente resolución:
Discutido en Kona. El LWG acepta que el constructor predeterminado debería ser equivalente a la construcción de una cadena vacía. Dejando esto abierto por ahora, en parte porque necesitamos una expresión que exprese eso, y en parte porque no está claro que haya algún punto para tener el miembro vacío() en primer lugar.
N1711 (2004-11-04) fue el primer borrador de TR1 que carece de basic_regex::empty()
. A partir de ahí, se importó de TR1 a C++ 11 sin más discusión.
- 1. regex: boost :: xpressive vs boost :: regex
- 2. Boost regex runtime error
- 3. Ruby Regex vs Python Regex
- 4. boost :: regex - \ bb?
- 5. Estándar Regex vs python regex discrepancia
- 6. C++ std :: regex multiline sintaxis
- 7. C++ :: Boost :: Regex Iterar sobre las subcompetencias
- 8. boost regex sub-string partido
- 9. Regex: ¿cómo encontrar el valor entero máximo de un patrón?
- 10. Regex para encontrar variables estáticas (no finales)
- 11. No se puede encontrar el método InsertOnSubmit()
- 12. C++ expresiones regulares con Boost Regex
- 13. Python - REGEX único vs multilínea
- 14. Regex: Encontrar cadenas que no se inicia con X
- 15. Validar nombres de clase/método con regex
- 16. Boost.Regex vs C++ 11 Regex
- 17. C++ regex no comprende
- 18. Boost C++ regex - cómo obtener múltiples coincidencias
- 19. Obtener la última coincidencia con Boost :: Regex
- 20. string.match (regex) vs regex.match (cadena)
- 21. Regex para el método String.matches de java?
- 22. Regex plus vs star difference?
- 23. Regex (a?) * No exponencial?
- 24. Regex para buscar llamadas al método
- 25. Acceso de Microsoft Office `LIKE` VS` RegEx`
- 26. Regex booleana no
- 27. Rendimiento std :: strstr vs std :: string :: encontrar
- 28. Regex no operador
- 29. ¿Regex con una cuerda o no regex con una cuerda?
- 30. Javascript no se dividirá usando regex
No está en C++ 11 ... – PlasmaHH
@PlasmaHH: ¿De verdad? Yo pensé que sí. Está en MSVC, wikipedia lo menciona también aquí - http://en.wikipedia.org/wiki/C%2B%2B11#Regular_expressions ¿Por lo tanto, finalmente no llegó al estándar de última hora? –
@VladLazarenko Estoy mirando N3290 y no puedo encontrarlo. – pmr