logo Homepage
+  NewbieContest
|-+  Programmation» Langages compilés» [Python] Utiliser les regex
Username:
Password:
Pages: [1]
  Imprimer  
Auteur Fil de discussion: [Python] Utiliser les regex  (Lu 2325 fois)
BelledeNuit

Profil challenge

Classement : 3574/54283

Néophyte
*
Hors ligne Hors ligne
Messages: 3


Voir le profil
« 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 !
Journalisée

Tout est plus glamour quand on le fait sur un lit. Même peler des pommes de terres.
_o_
Relecteur

Profil challenge

Classement : 42/54283

Membre Héroïque
*
Hors ligne Hors ligne
Messages: 1258


Voir le profil
« #1 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
Journalisée

Les épreuves de hack de NC sont trop faciles ? Et pourtant ! Bienvenue dans la vraie vie : http://thedailywtf.com/Articles/So-You-Hacked-Our-Site!.aspx
BelledeNuit

Profil challenge

Classement : 3574/54283

Néophyte
*
Hors ligne Hors ligne
Messages: 3


Voir le profil
« #2 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 !
« Dernière édition: 04 Septembre 2009 à 16:05:07 par BelledeNuit » Journalisée

Tout est plus glamour quand on le fait sur un lit. Même peler des pommes de terres.
Pages: [1]
  Imprimer  
 
Aller à: