¿Qué expresión regular en Python uso para que coincida con fechas como esta: "11/12/98"?Fecha de coincidencia de Python regex
24
A
Respuesta
33
Se podría buscar dígitos separados por forward-barras:
In [146]: import re
In [152]: match=re.search(r'(\d+/\d+/\d+)','The date is 11/12/98')
In [153]: match.group(1)
Out[153]: '11/12/98'
Por supuesto, las fechas no válidas también coincidir:
In [154]: match=re.search(r'(\d+/\d+/\d+)','The date is 99/99/99')
In [155]: match.group(1)
Out[155]: '99/99/99'
Se podría validar la fecha usando strptime
(véase más adelante).
En lugar de utilizar expresiones regulares, se podría analizar en un objeto datetime.datetime
, que es probablemente más útil:
In [140]: datetime.datetime.strptime("11/12/98","%m/%d/%y")
Out[140]: datetime.datetime(1998, 11, 12, 0, 0)
In [141]: datetime.datetime.strptime("11/12/98","%d/%m/%y")
Out[141]: datetime.datetime(1998, 12, 11, 0, 0)
In [143]: date.year
Out[143]: 1998
In [144]: date.month
Out[144]: 11
In [145]: date.day
Out[145]: 12
Para probar si una secuencia de dígitos separados por forward-barras representa una fecha válida , puede usar un bloque try..except
. fechas inválidas elevarán un ValueError
:
In [159]: try:
.....: datetime.datetime.strptime("99/99/99","%m/%d/%y")
.....: except ValueError as err:
.....: print(err)
.....:
.....:
time data '99/99/99' does not match format '%m/%d/%y'
1
puedo encontrar el siguiente RE trabajar bien para la fecha en el siguiente formato;
- 14-11-2017
- 14.11.2017
- 14 | 11 | 2017
Puede aceptar año a partir de 2000-2099
Por favor, no se olvide para agregar $ al final, si no acepta 14-11-201 o 20177
date="13-11-2017"
x=re.search("^([1-9] |1[0-9]| 2[0-9]|3[0-1])(.|-)([1-9] |1[0-2])(.|-|)20[0-9][0-9]$",date)
x.group()
salida = '13 -11-2017 '
Cuestiones relacionadas
- 1. Python RegEx Coincidencia de nueva línea
- 2. Regex elegante coincidencia de patrón
- 3. Coincidencia de RegEx entre caracteres
- 4. jQuery coincidencia regex
- 5. Javascript RegEx coincidencia parcial
- 6. regex calle dirección coincidencia
- 7. Mejor práctica: coincidencia parcial de Regex
- 8. Devolver la primera coincidencia de Ruby regex
- 9. coincidencia de Java Regex entre llaves $
- 10. coincidencia de una línea en JS regex
- 11. Python regex parse stream
- 12. Python regex string matching?
- 13. Coincidencia de cadena de Python
- 14. .NET Regex admite la coincidencia global?
- 15. Obtener la última coincidencia con Boost :: Regex
- 16. vba regex solo devuelve la primera coincidencia
- 17. Grupos de coincidencia en Python
- 18. python multiline regex
- 19. URL de coincidencia regex sin extensión de archivo
- 20. Uso de RegEx para equilibrar el paréntesis de coincidencia
- 21. Ruby Regex vs Python Regex
- 22. Regex para verificar la fecha
- 23. Iterar a través de cada "coincidencia" (Ruby regex)
- 24. ¿Cómo hacer una búsqueda Regex de "coincidencia mínima" en C#?
- 25. Regex: solo deje espacio o nada después de una coincidencia
- 26. ¿Cómo puedo reemplazar una coincidencia de subcadena regex en Javascript?
- 27. Coincidencia de patrones de listas en Python
- 28. Coincidencia de estructuras anidadas con expresiones regulares en Python
- 29. comportamiento extraño de Python Regex
- 30. Estándar Regex vs python regex discrepancia
Lo siento, mi error, lo he probado contra 4 dígitos :) – Bronek