55 votes

Regex Python pour faire correspondre les dates

Quelle expression régulière en Python dois-je utiliser pour faire correspondre des dates comme celle-ci : "11/12/98" ?

4voto

aditya Prakash Points 51

Je trouve que le RE ci-dessous fonctionne bien pour Date dans le format suivant ;

  1. 14-11-2017
  2. 14.11.2017
  3. 14|11|2017

Il peut accepter l'année 2000-2099

N'oubliez pas d'ajouter $ à la fin, sinon acceptez le 14-11-201 ou 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()

sortie = '13-11-2017'

4voto

En utilisant cette expression régulière, vous pouvez valider différents types d'échantillons de date/heure, juste un petit changement est nécessaire.

^\d\d\d\d/(0?[1-9]|1[0-2])/(0?[1-9]|[12][0-9]|3[01]) (00|[0-9]|1[0-9]|2[0-3]):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9])$ -->validez ceci : 12/7/2018 13:00:00

pour votre format, vous pouvez le changer en :

^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[0-2])/\d\d$ --> valide ceci : 12/11/98

2voto

J.Melody Points 131

Eh bien, d'après ma compréhension, simplement pour faire correspondre ce format dans une chaîne donnée, je préfère cette expression régulière :

 pattern='[0-9|/]+'

pour correspondre au format de manière plus stricte, les travaux suivants :

 pattern='(?:[0-9]{2}/){2}[0-9]{2}'

Personnellement, je ne peux pas être d'accord avec la réponse d'unutbu car nous utilisons parfois des expressions régulières pour "trouver" et "extraire", pas seulement "valider".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X