Regex pour ne pas prendre en compte les balises html [Résolu]

Signaler
Messages postés
53
Date d'inscription
lundi 29 juin 2009
Statut
Membre
Dernière intervention
21 juillet 2013
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
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

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
64
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
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
64
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
Messages postés
53
Date d'inscription
lundi 29 juin 2009
Statut
Membre
Dernière intervention
21 juillet 2013

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.
Messages postés
53
Date d'inscription
lundi 29 juin 2009
Statut
Membre
Dernière intervention
21 juillet 2013

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
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
64
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