Regex tout ce qui se trouve entre les balises... [Résolu]

Signaler
Messages postés
37
Date d'inscription
vendredi 28 mars 2003
Statut
Membre
Dernière intervention
25 juin 2010
-
medicair
Messages postés
37
Date d'inscription
vendredi 28 mars 2003
Statut
Membre
Dernière intervention
25 juin 2010
-
Bonjour, le regex suivant me retourne vrai pour toutes les balises script y compris leurs contenu d'une page .

<script[^>]*>(.|\n)*?</script[^>]*>(\r\n)?

Je souhaite en réalité qu'il me retourne vrai pour exactement l'inverse c'est a dire tout ce qui n'est pas entre les balises script.

Pourriez-vous m'aider ?

D'avance merci
SDA

8 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
ok... dans ce cas, le mieux est d'utiliser un replace avec la regex précédente...

string outputString = Regex.Replace(inputString, @"<script[^>]*>(.|\n)*?</script[^>]*>(\r\n)?", string.Empty);

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
Utilise toujours ta regex comme ceci :

MatchCollection matches = Regex.Matches( inputString, @"<script[^>]*>(.|\n)*?</script[^>]*>(\r\n)?");

Maintenant la collection matches contient l'ensemble des résultats trouvés.

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
37
Date d'inscription
vendredi 28 mars 2003
Statut
Membre
Dernière intervention
25 juin 2010
2
en fait je ne fait pas du tout de CSharp, et je te remercie bien de m'avoir éclairé, j'ai tout de meme pu adapter pour VB, voici ma fonction qui sait peut être utile pour d'autres.

Function Recupsript(html,conf)
' si conf = 1, temp recupère toutes les balises script sinon récupère le reste
   Dim Regex
   Dim Matche
   Dim Matches
   Dim RetStr


   Set Regex = New RegExp


   Regex.Pattern = "<script[^>]*>(.|\n)*?</script[^>]*>(\r\n)?"
   Regex.IgnoreCase = True
   Regex.Global = True


  If (Regex.Test(html) = True) Then
          If conf="1" then
              Set Matches = Regex.Execute(html)
               For Each Matche In Matches
                 temp = temp & Matche.Value
               Next
 Else
    temp = Regex.Replace(html,"")
 End if


   Else
    temp = ""
   End If
   Recupsript = temp
End Function

A bientôt !


SDA
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
J'ai pas bien compris...

tu veux tester qu'une chaine n'est pas compris entre les balises script ?

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
37
Date d'inscription
vendredi 28 mars 2003
Statut
Membre
Dernière intervention
25 juin 2010
2
Je souhaite récupérer tout ce qui ne se situe pas dans les balises scripts sachant qu'il y en a plusieurs dans la page ex :

récupe la balise div + son contenu

<script>vire la balise script+ son contenu</script>
récupe la balise im + son contenu
<script>vire la balise script+ son contenu</script>
récupe la balise table + son contenu

en somme le regex que je cherche devrait récupérer

récupe la balise div + son contenu

récupe la balise im + son contenu
récupe la balise table + son contenu

encore merci

SDA
Messages postés
37
Date d'inscription
vendredi 28 mars 2003
Statut
Membre
Dernière intervention
25 juin 2010
2
Ha, effectivement c'est parfait ! merci, et comment récupérer uniquement les balises script et leur contenu ?

merci Seb

SDA
Messages postés
37
Date d'inscription
vendredi 28 mars 2003
Statut
Membre
Dernière intervention
25 juin 2010
2
Merci à toi !

SDA
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
De rien... j'adore les regexes :)

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]