Warning: Undefined array key "DOKU_PREFS" in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/common.php on line 2082
divers_expr_reg [Les recettes Python de Tyrtamos]

Outils pour utilisateurs

Outils du site


divers_expr_reg

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Dernière révision Les deux révisions suivantes
divers_expr_reg [2008/12/11 14:04]
tyrtamos
divers_expr_reg [2008/12/11 14:37]
tyrtamos
Ligne 93: Ligne 93:
 </code> </code>
  
-Il est bien sûr possible de simplifier les 2 premières options (qui deviennent: "([0-9]+([eE][+-]?[0-9]+)?)"), et comme l'exposant devient alors optionnel dans les 3 cas qui restent, on peut le mettre en facteur. Mais veillez à une chose//**garder la lisibilité!**// Sauf cas particulier, il est dommage de gagner quelques microsecondes, et en contrepartie de ne plus comprendre ce qu'on fait...+Mais, en fait, l'expression se simplifie, ce qui donne: 
 + 
 +<code python> 
 +motif = r"^[+-]?((([0-9]+(\.[0-9]*)?)|(\.[0-9]+))([eE][+-]?[0-9]+)?)$" 
 +</code> 
 + 
 +Sa lecture est plus complexe, et on peut mieux la comprendre avec l'indentation: 
 + 
 +<code> 
 +
 +[+-]?   éventuellement un signe 
 +
 +    ( 
 +        ([0-9]+(\.[0-9]*)? on commence par un chiffre, éventuellement suivi d'un point, lui-même éventuellement suivi d'un ou plusieurs chiffres ("1." est accepté en tant que "1.0"
 +        | 
 +        (\.[0-9]+)    on commence par un point, suivi d'un ou plusieurs chiffre(s) (".1" est accepté en tant que "0.1", mais, bien sûr, "." est refusé) 
 +    ) 
 +    ([eE][+-]?[0-9]+)?   et dans l'un ou l'autre des 2 cas précédents, on peut avoir éventuellement un exposant  
 +
 +
 +</code> 
 + 
 +L'avantage d'utiliser les expressions régulières est ici évidente: 
 + 
 +  si je veux limiter mes nombres à des nombres entiers ou réels mais sans exposant, il suffit de supprimer le motif de l'exposant 
 + 
 +  * si en plus je veux reconnaître des nombres écrits en français (avec la virgule), il suffit que je remplace le point par une virgule dans le motif 
 + 
  
 <html> <html>
divers_expr_reg.txt · Dernière modification: 2008/12/11 18:37 de tyrtamos