Expression réguliére [Résolu]

Messages postés
30
Date d'inscription
jeudi 24 septembre 2009
Dernière intervention
15 janvier 2010
- - Dernière réponse : Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 29 oct. 2009 à 11:03
Bonjour à tous et à toutes.
SVP, je cherche un regex qui permet de detecter le contenu entre les balises <style>-----------------------</style> dans un fichier html.
Vraiment je ne peut pas avancé, j'ai deja poser la question voici cette rejex $pattern"/\<style(?:[^\>*)\>(.*?)\<\/style\>/";
> ca marche pas ...?
Veuillez m'aider
Merci
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
3
Merci
\bstyle *= *".*?"

\b => début de mot
style * 'style' suivi de 0 à n espaces
* '' suivi de 0 à n espaces
".*?" .*? tout caractère (de 0 à n)

le '*?' est une construction spéciale demandant au motif de ne pas être gourmand et de prendre le moins de caractère possible. En gros, ca s'arretera au premier " rencontré

Renfield - Admin CodeS-SourceS - MVP Visual Basic

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
0
Merci
<style>[\s\S]+</style>

tout simplement ^^


et pour l'attribut style:

\bstyle *= *".*?"




Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
Messages postés
30
Date d'inscription
jeudi 24 septembre 2009
Dernière intervention
15 janvier 2010
0
Merci
ca se voit que c'est simple mais malheuresement ca marche pas
T'inquiéte j'ai aboutit à la bonne solution:
$pattern="/<style[^>]*>(.*)<\/style>/Ui";
Commenter la réponse de karimfellah
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
0
Merci
testé avec le code source de la présente page :

<head.*?>[\s\S]+</head> nickel


le '.' tel que tu le définis dans ta regexp désigne normallement tout caractère sauf les sauts de lignes.
Du coup, je sais pas trop comment cela fonctionne (peut etre lié à ton /U)

\s => tout caractère espace ou saut de ligne
\S => tous les autres

du coup, on avance nickel jusqu'a la balise fermante.



Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
Messages postés
30
Date d'inscription
jeudi 24 septembre 2009
Dernière intervention
15 janvier 2010
0
Merci
Merci bien Renfield,
Vraiment ca m'a apporter de bien votre réponse.
je suis un débutant precés et les regex m'embéte je réalise mon P.F.E et il ne me reste pas beacoup du temps
j'ai atendu presque 2 jours pour avoir cette solution.

A propos de l'attribut style c pas trop clair si ca te dérange pas merci de me réexpliquer comment ca marche le regex
que tu m'a proposé

Merci infiniment.
Commenter la réponse de karimfellah

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.