Expression régulière en python
Résolu/Fermé
A voir également:
- Expression régulière en python
- Expression de recherche - Guide
- Citizen code python - Guide
- Python retour à la ligne dans le code - Forum Python
- Expected expression ✓ - Forum C
- Ce programme est écrit en python ✓ - Forum Python
3 réponses
heyquem
Messages postés
759
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
29 décembre 2013
130
Modifié par heyquem le 23/12/2010 à 14:47
Modifié par heyquem le 23/12/2010 à 14:47
Bonjour,
Eh bien la RE '<script language="javascript">(.*?)</script>' devrait faire l'affaire.
Elle capture ce qui est entre
'<script language="javascript">'
et
'</script>'
dans un groupe (le groupe 1)
Tu fais
- soit
pour récupérer la première occurence dans la chaine ch
si tu n'as à le faire qu'un nombre très limité de fois dans un programme
- ou
si tu dois répéter plusieurs fois une telle recherche
- soit
pour extraire toutes les occurences d'un texte
- ou
pour extraire plusieurs fois toutes les occurences de différents textes
- soit
si tu veux faire des traitements à chaque occurence rencontrée
Le point d'interrogation dans (.*?) est très important: c'est lui qui limite la gloutonnerie du moteur de regex: grâce à la présence de ce '?' , le moteur de regex s'arrête à la première rencontre de '</script>' après '<script language="javascript">' ,
sinon le groupe capturerait toute la portion de texte située entre un '<script language="javascript">' et le DERNIER '</script>' rencontré après, même si dedans cette portion il ya des '<script language="javascript">' et des '</script>' rencontrés.
Eh bien la RE '<script language="javascript">(.*?)</script>' devrait faire l'affaire.
Elle capture ce qui est entre
'<script language="javascript">'
et
'</script>'
dans un groupe (le groupe 1)
Tu fais
- soit
re.search('<script language="javascript">(.*?)</script>',ch).group(1)
pour récupérer la première occurence dans la chaine ch
si tu n'as à le faire qu'un nombre très limité de fois dans un programme
- ou
pat = re.compile('<script language="javascript">(.*?)</script>') pat.search(ch).group(1)
si tu dois répéter plusieurs fois une telle recherche
- soit
re.findall('<script language="javascript">(.*?)</script>',ch)
pour extraire toutes les occurences d'un texte
- ou
pat = re.compile('<script language="javascript">(.*?)</script>') pat.findall(ch)
pour extraire plusieurs fois toutes les occurences de différents textes
- soit
pat = re.compile('<script language="javascript">(.*?)</script>') for match in pat.finditer(ch): x = match.group(1) traitement à partir de x
si tu veux faire des traitements à chaque occurence rencontrée
Le point d'interrogation dans (.*?) est très important: c'est lui qui limite la gloutonnerie du moteur de regex: grâce à la présence de ce '?' , le moteur de regex s'arrête à la première rencontre de '</script>' après '<script language="javascript">' ,
sinon le groupe capturerait toute la portion de texte située entre un '<script language="javascript">' et le DERNIER '</script>' rencontré après, même si dedans cette portion il ya des '<script language="javascript">' et des '</script>' rencontrés.
Utilisateur anonyme
23 déc. 2010 à 13:21
23 déc. 2010 à 13:21
merci pour ton post complet !!
heyquem
Messages postés
759
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
29 décembre 2013
130
23 déc. 2010 à 14:53
23 déc. 2010 à 14:53
De rien.
J'ai regardé ton profil. J'ai l'impression que tu t'es mis à Python depuis peu. C'est pour ajouter une corde à ton arc ou pour remplacer plus ou moins Java ?
J'ai regardé ton profil. J'ai l'impression que tu t'es mis à Python depuis peu. C'est pour ajouter une corde à ton arc ou pour remplacer plus ou moins Java ?
Utilisateur anonyme
26 déc. 2010 à 17:12
26 déc. 2010 à 17:12
nan j'avait déja quelque connaissance en python mais j'ai envie de m'améliorer !!
Je maitrise déjà le c/c++ / javascript/php en partit est html/css
Je maitrise déjà le c/c++ / javascript/php en partit est html/css