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

cs_romain117 53 Messages postés lundi 29 juin 2009Date d'inscription 21 juillet 2013 Dernière intervention - 16 juil. 2009 à 16:57 - Dernière réponse : Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention
- 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
Afficher la suite 

5 réponses

Répondre au sujet
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 17 juil. 2009 à 15:10
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Renfield
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 17 juil. 2009 à 10:36
+1
Utile
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
Commenter la réponse de Renfield
cs_romain117 53 Messages postés lundi 29 juin 2009Date d'inscription 21 juillet 2013 Dernière intervention - 17 juil. 2009 à 11:22
0
Utile
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.
Commenter la réponse de cs_romain117
cs_romain117 53 Messages postés lundi 29 juin 2009Date d'inscription 21 juillet 2013 Dernière intervention - 17 juil. 2009 à 17:37
0
Utile
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
Commenter la réponse de cs_romain117
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 17 juil. 2009 à 20:38
0
Utile
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
Commenter la réponse de Renfield

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.