Expression réguliére

Résolu
karimfellah Messages postés 30 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 15 janvier 2010 - 24 oct. 2009 à 11:12
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 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

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
29 oct. 2009 à 11:03
\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
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 oct. 2009 à 09:53
<style>[\s\S]+</style>

tout simplement ^^


et pour l'attribut style:

\bstyle *= *".*?"




Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
karimfellah Messages postés 30 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 15 janvier 2010
29 oct. 2009 à 10:19
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";
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 oct. 2009 à 10:28
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
0

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

Posez votre question
karimfellah Messages postés 30 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 15 janvier 2010
29 oct. 2009 à 10:42
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.
0
Rejoignez-nous