Regex pour ne pas prendre en compte les balises html

Résolu
cs_romain117 Messages postés 53 Date d'inscription lundi 29 juin 2009 Statut Membre Dernière intervention 21 juillet 2013 - 16 juil. 2009 à 16:57
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 17 juil. 2009 à 20:38
Bonjour a tous !

J'ai une question toute bête. Après avoir longtemps lu la doc je ne comprends toujours pas cette partie de Regex :

([^<]*)?


Pouvez-vous m'éclairer?

Le caractere "^" signifie ce que l'on ne veut pas
Le caractere "*" signifie 0, 1 ou plusieurs fois.
Le caractere "?" signifie 0 ou 1 fois


Les 3 réunis je comprends plus rien !!!


Merci d'avance à ceux qui pourront me consacrer un petit bout de leur temps

5 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 juil. 2009 à 15:10
dans :
<[!/]?\w+.*?>

le ? final veux dire de prendre tout tant que l'on trouve pas de ">",
tout simplement.

c'est effectivement ce que l'on pourrait appeler un mode non gourmand.

si tu ne le mets pas, ca va extraire le texte, les balises qui suivent, tant que le "." match un caractère qui va bien jusqu'au ">" final

Renfield - Admin CodeS-SourceS - MVP Visual Basic
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 juil. 2009 à 10:36
tout caractère sauf <, repris de 0 à n fois

ici, le ? est inutile de par la présence du 'tout sauf' qui est assez discriminant.

ca permet de faire descendre la priorité de la parenthèse qui suit

en entrée:
>bonjour 25>le 32>monde 05
et en regexp:
>.*(\d+)

ca me trouve un seul item, qui prend toute la ligne.


en ajoutant un simple ?:
>.*?(\d+)
on récupère trois item, séparés a chaque >


ca permet en gros de dire de séléctionner au plus court.


par exemple:
<[!/]?\w+.*?>
Permet de selectionner toutes les balises HTML


Renfield - Admin CodeS-SourceS - MVP Visual Basic
1
cs_romain117 Messages postés 53 Date d'inscription lundi 29 juin 2009 Statut Membre Dernière intervention 21 juillet 2013 1
17 juil. 2009 à 11:22
Ok merci !

je crois que je commence vraiment a comprendre ! en fait dans ce cas là le "?" c'est pour le mode "non gourmand", c'est ca ?

Si j'ai bien compris, dans ce cas, le"?" sert à dire "on separe des que le motif se répète. Et le motif c'est tout ce qui précède le point d'interrogation. Par exemple dans le regex <[!/]?\w+.*?> le dernier "?" veut dire que l'on separe dès qu'on retrouve le motif <[!/]?\w+.*
Est-ce que c'est ca ?


Merci encore. Mon problème semble résolu.
0
cs_romain117 Messages postés 53 Date d'inscription lundi 29 juin 2009 Statut Membre Dernière intervention 21 juillet 2013 1
17 juil. 2009 à 17:37
Ok c'est bon j'ai tout compris !
Enfin j'espère...

On m'avait dit que le php c'était pas tres dur...quand je vois le regex je me dit qu'on avait pas tout à fait raison .
Et c'est prise de tête en plus !!

Merci encore.

A bientôt sur le forum je l'espère !
Romain
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 juil. 2009 à 20:38
Je code en VB...

comme quoi les RegEx rassemblent ^^
et que leur difficulté relative 'est en rien liée à Php :p


Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
Rejoignez-nous