Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Dernière révision Les deux révisions suivantes | ||
divers_expr_reg [2008/12/11 10:13] tyrtamos |
divers_expr_reg [2008/12/11 14:37] tyrtamos |
||
---|---|---|---|
Ligne 22: | Ligne 22: | ||
A noter que le motif trouve aussi un nombre entier très long (comme " | A noter que le motif trouve aussi un nombre entier très long (comme " | ||
- | ===== test d'un nombre réel (ou flottant ou "à virgule flottante" | + | ===== test d'un nombre réel (ou flottant, ou à "virgule flottante" |
<code python> | <code python> | ||
- | motif = r" | + | motif = r" |
</ | </ | ||
Ligne 31: | Ligne 31: | ||
< | < | ||
- | ^ -> on commence au début de la chaine | + | ^ |
- | [+-]? -> éventuellement un" | + | [+-]? il peut y avoir ou pas un signe |
- | [0-9]+ | + | ( |
- | (\.[0-9]*)? -> éventuellement un point, suivi éventuellement d'un ou plusieurs chiffres | + | ([0-9]+[eE][+-]? |
- | ([eE][+-]? | + | | |
- | $ -> on termine à la fin de la chaine | + | ([0-9]+\.[0-9]*([eE][+-]? |
+ | | | ||
+ | (\.[0-9]+([eE][+-]?[0-9]+)?) si on commence par un point, il y a un ou plusieurs | ||
+ | ) | ||
+ | $ | ||
</ | </ | ||
- | NB: il peut ne pas y avoir de chiffre derrière le 1er point: en effet, Python accepte | + | Bien sûr, si on veut chercher |
- | NB: ce motif refuse un nombre réel qui commence par un point. | + | A noter qu'on peut faire plus court, (mais encore moins clair!) en remplaçant " |
- | Bien sûr, si on veut chercher un nombre réel dans une chaine qui contient aussi autre chose, il faut retirer les "^" et "$". | + | <code python> |
+ | motif = r"^[+-]? | ||
+ | </ | ||
- | On peut aussi vouloir trouver un nombre réel sans exposant. | + | On pourrait |
+ | |||
+ | Vous pouvez essayer et éventuellement modifier l' | ||
<code python> | <code python> | ||
- | motif = r" | + | motif = r" |
+ | while True: | ||
+ | x = raw_input(" | ||
+ | if x == "": | ||
+ | break | ||
+ | if re.match(motif, | ||
+ | print u"x est un réel" | ||
+ | else: | ||
+ | print u"x n'est pas un réel" | ||
</ | </ | ||
- | Ou, au contraire, vouloir ne trouver que les nombres réels avec exposant: il suffit de supprimer le dernier | + | |
+ | ===== test d'un nombre quelconque (entier ou réel) ===== | ||
+ | |||
+ | On peut simplement ajouter l' | ||
<code python> | <code python> | ||
- | motif = r" | + | motif = r" |
</ | </ | ||
+ | |||
+ | Et ce qui se lit: | ||
+ | |||
+ | < | ||
+ | ^ | ||
+ | [+-]? il peut y avoir ou pas un signe | ||
+ | ( | ||
+ | ([0-9]+) | ||
+ | | | ||
+ | ([0-9]+[eE][+-]? | ||
+ | | | ||
+ | ([0-9]+\.[0-9]*([eE][+-]? | ||
+ | | | ||
+ | (\.[0-9]+([eE][+-]? | ||
+ | ) | ||
+ | $ | ||
+ | </ | ||
+ | |||
+ | Mais, en fait, l' | ||
+ | |||
+ | <code python> | ||
+ | motif = r" | ||
+ | </ | ||
+ | |||
+ | Sa lecture est plus complexe, et on peut mieux la comprendre avec l' | ||
+ | |||
+ | < | ||
+ | ^ | ||
+ | [+-]? | ||
+ | ( | ||
+ | ( | ||
+ | ([0-9]+(\.[0-9]*)? | ||
+ | | | ||
+ | (\.[0-9]+) | ||
+ | ) | ||
+ | ([eE][+-]? | ||
+ | ) | ||
+ | $ | ||
+ | </ | ||
+ | |||
+ | L' | ||
+ | |||
+ | * si je veux limiter mes nombres à des nombres entiers ou réels mais sans exposant, il suffit de supprimer le motif de l' | ||
+ | |||
+ | * 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. | ||