NewbieContest

Programmation => Langages compilés => Discussion démarrée par: BelledeNuit le 03 Septembre 2009 à 21:03:53



Titre: [Python] Utiliser les regex
Posté par: BelledeNuit le 03 Septembre 2009 à 21:03:53
Bonsoir !

Je me suis lancée dans le Python il y a peu, et pour les épreuves de NC.
J'aimerais utiliser des regex et plus précisément faire des matches, pour extirper seulement certains caractères d'une expression. Mais je patauge dans la semoule ! J'ai 3 docs d'ouvertes, mais j'avoue que je n'y comprends pas grand chose.
J'ai trouvé ce bout de code :
Code:
>>> m = re.match([color=red]r[/color]"(\d+)[color=teal]\[/color].(\d+)", "24.1632")
>>> m.groups()
('24', '1632')
Il fait bien ce que je veux ! Je ne vois pas a quoi correspond le r et le \.
De plus, si je remplace "24.1632" par "24xcf1632" ca me renvoie une erreur. ( 'NoneType' object has no attribute 'groups' )

Merci de m'éclairer,
Bonne soirée à tous !


Titre: Re : [Python] Utiliser les regex
Posté par: _o_ le 03 Septembre 2009 à 23:53:17
Je ne vois pas a quoi correspond le r

backslashes are not handled in any special way in a string literal prefixed with 'r'. Même si, en l'occurrence, je ne vois pas bien l'intérêt.

Citation
et le \.

Le backslash permet d'échapper le "." qui suit. Ce dernier a en effet une signification particulière dans les expressions rationnelles, puisqu'il matche n'importe quel caractère. Quand il est échappé, cela signifie que l'on attend le caractère littéral ".".

Citation
De plus, si je remplace "24.1632" par "24xcf1632" ca me renvoie une erreur. ( 'NoneType' object has no attribute 'groups' )

C'est tout à fait normal : la chaîne "24xcf1632" ne matche pas l'expression rationnelle, donc le résultat m ne vaut rien, est donc de type None, et n'a aucun attribut. Pour rappel, groups() retourne les éléments capturés par les parenthèses, mais cela n'a de sens que si la chaîne matche l'expression.

Tout est expliqué ici : http://docs.python.org/library/re.html
Ou en français : http://quentel.pierre.free.fr/python-trad/module-re.html


Titre: Re : [Python] Utiliser les regex
Posté par: BelledeNuit le 04 Septembre 2009 à 11:37:18
Salut !

J'ai pris cet exemple sur la doc en anglais, j'ai déja les deux liens ! Merci quand même !
Je crois que je comprends un peu mieux. Je vais faire des essais pratiques.

Bon après midi !

Edit : Merci beaucoup ! Ça marche !