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 13:17] tyrtamos |
divers_expr_reg [2008/12/11 14:37] tyrtamos |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Expressions régulières diverses ====== | ====== Expressions régulières diverses ====== | ||
- | |||
- | //**En construction!**// | ||
- | |||
Vous trouverez ici quelques expressions régulières avec leur " | Vous trouverez ici quelques expressions régulières avec leur " | ||
Ligne 25: | 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 | + | ===== test d'un nombre réel (ou flottant, ou à " |
<code python> | <code python> | ||
- | motif = r" | + | motif = r" |
</ | </ | ||
Ligne 34: | 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][+-]? | ||
+ | ) | ||
+ | $ | ||
</ | </ | ||
- | |||
- | NB: ce motif refuse un nombre réel qui commence par un point. | ||
Bien sûr, si on veut chercher un tel nombre (entier ou réel) dans une chaine qui contient aussi autre chose, il faut retirer les " | Bien sûr, si on veut chercher un tel nombre (entier ou réel) dans une chaine qui contient aussi autre chose, il faut retirer les " | ||
- | ===== test d'un nombre réel (ou "flottant" | + | A noter qu'on peut faire plus court, |
- | Pour avoir une solution plus complète, il faut bien sûr être clair sur ce qu'on veut accepter et sur ce qu'on veut refuser. | + | <code python> |
+ | motif = r" | ||
+ | </ | ||
- | Par exemple: | + | On pourrait aussi mettre le motif de l' |
- | * acceptable: " | + | Vous pouvez essayer et éventuellement modifier l' |
- | | + | <code python> |
+ | motif = r" | ||
+ | while True: | ||
+ | x = raw_input("x = ").strip() | ||
+ | if x == "" | ||
+ | break | ||
+ | if re.match(motif, | ||
+ | print u"x est un réel" | ||
+ | else: | ||
+ | print u"x n'est pas un réel" | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== test d'un nombre quelconque (entier ou réel) ===== | ||
- | Ce qui donne l'expression régulière suivante: | + | On peut simplement ajouter |
<code python> | <code python> | ||
- | r" | + | motif = r" |
</ | </ | ||
- | Et voilà comment elle se lit: | + | Et ce qui se lit: |
< | < | ||
- | ^ -> début de la chaine | + | ^ |
- | [+-]? -> éventuellement | + | [+-]? il peut y avoir ou pas un signe |
- | ( -> début de bloc qui décrit tout ce qui peut suivre l' | + | ( |
- | ([0-9]+[eE][+-]? | + | ([0-9]+) ça pourrait être un nombre entier |
- | | -> ou: | + | | |
- | ( | + | ([0-9]+[eE][+-]? |
- | ( | + | | |
- | | + | ([0-9]+\.[0-9]*([eE][+-]? |
- | | | + | | |
- | (\.[0-9]+) -> soit j'ai un point suivi d'un ou plusieurs chiffre(s) (comme .5) | + | (\.[0-9]+([eE][+-]? |
- | ) | + | ) |
- | | + | $ |
- | ) | + | |
- | ) -> fin de bloc | + | |
- | $ -> fin de la chaine | + | |
</ | </ | ||
- | Vous pouvez essayer et éventuellement modifier | + | Mais, en fait, l' |
<code python> | <code python> | ||
- | motiffloat | + | motif = r" |
- | + | ||
- | while True: | + | |
- | x = raw_input(" | + | |
- | if x == "": | + | |
- | break | + | |
- | if re.match(motiffloat, | + | |
- | print u"x est un réel" | + | |
- | else: | + | |
- | print u"x n'est pas un réel" | + | |
</ | </ | ||
+ | |||
+ | 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. | ||