Ceci est une ancienne révision du document !
Vous trouverez ici quelques expressions régulières avec leur “décodage” en langage humain (et ce n'est pas du luxe ).
motif = r"^[+-]?[0-9]+$"
avec:
^ -> on commence au début de la chaine [+-]? -> éventuellement un"+" ou un "-" [0-9]+ -> un ou plusieurs chiffre(s) $ -> on termine à la fin de la chaine
Bien sûr, si on veut chercher un entier dans une chaine qui contient aussi autre chose, il faut retirer les “^” et “$”.
A noter que le motif trouve aussi un nombre entier très long (comme “5555555555555555555555” par exemple) qui n'est pas un “int” en Python, mais un “long”.
motif = r"^[+-]?[0-9]+(\.[0-9]*)?([eE][+-]?[0-9]+)?$"
avec:
^ -> on commence au début de la chaine [+-]? -> éventuellement un"+" ou un "-" [0-9]+ -> un ou plusieurs chiffre(s) (\.[0-9]*)? -> éventuellement un point, suivi éventuellement d'un ou plusieurs chiffres ([eE][+-]?[0-9]+)? -> éventuellement un exposant (un "e" ou un "E"), suivi éventuellement d'un signe (+ ou -), suivi d'un ou plusieurs chiffres $ -> on termine à la fin de la chaine
NB: il peut ne pas y avoir de chiffre derrière le 1er point: en effet, Python accepte un nombre tel que “1.” au lieu de “1.0” comme d'ailleurs la plupart des calculatrices de poche!
NB: ce motif refuse un nombre réel qui commence par un point.
Bien sûr, si on veut chercher un nombre réel dans une chaine qui contient aussi autre chose, il faut retirer les “^” et “$”.
On peut aussi vouloir trouver un nombre réel sans exposant. Il suffit de retirer la dernière partie du motif:
motif = r"^[+-]?[0-9]+(\.[0-9]*)?$"
Ou, au contraire, vouloir ne trouver que les nombres réels avec exposant: il suffit de supprimer le dernier “?”:
motif = r"^[+-]?[0-9]+(\.[0-9]*)?([eE][+-]?[0-9]+)$"