IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Expression Régulières pour plusieurs remplacements


Sujet :

VBScript

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Novembre 2006
    Messages : 150
    Points : 48
    Points
    48
    Par défaut Expression Régulières pour plusieurs remplacements
    Bonjour,

    J'aimerais remplacer, pour une chaine donnée un saut de ligne avant certains caractères :
    if => saut de ligne + if
    del => saut de ligne + del
    ...

    j'aimerais le faire avec une expression régulière, car pour l'instant c'est un peu barbare , et ma chaine n'est modifiée qu'une seule fois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function ReplaceWithVBCRLF (script)
     
    	Dim clean
    	ReplaceWithVBCRLF = Replace(script, "IF", VBCrlf & "IF")
    	ReplaceWithVBCRLF = Replace(script, "if", VBCrlf & "if")
    	ReplaceWithVBCRLF = Replace(script, "DEL", VBCrlf & "DEL")
    	ReplaceWithVBCRLF = Replace(script, "del", VBCrlf & "del")
    	ReplaceWithVBCRLF = Replace(script, "DELTREE", VBCrlf & "DELTREE")
    	ReplaceWithVBCRLF = Replace(script, "deltree", VBCrlf & "deltree")
    	ReplaceWithVBCRLF = Replace(script, "MSIEXEC", VBCrlf & "MSIEXEC")
    	ReplaceWithVBCRLF = Replace(script, "msiexec", VBCrlf & "msiexec")
     
    End Function
    Merci pour votre aide

  2. #2
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    Inspirez-vous de cette discussion Regex dans la fonction replace

  3. #3
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 180
    Points
    17 180
    Par défaut
    Salut
    et ma chaîne n'est modifiée qu'une seule fois
    Normale, si lors du premier Replace il y a remplacement, le suivant ne part pas de la chaîne contenant le remplacement précédent.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Function ReplaceWithVBCRLF(script)
     
        Dim clean
        clean = script
        clean = Replace(clean, "IF", vbCrLf & "IF", 1, -1, 0)
        clean = Replace(clean, "if", vbCrLf & "if", 1, -1, 0)
        clean = Replace(clean, "DEL", vbCrLf & "DEL", 1, -1, 0)
        clean = Replace(clean, "del", vbCrLf & "del", 1, -1, 0)
        clean = Replace(clean, "DELTREE", vbCrLf & "DELTREE", 1, -1, 0)
        clean = Replace(clean, "deltree", vbCrLf & "deltree", 1, -1, 0)
        clean = Replace(clean, "MSIEXEC", vbCrLf & "MSIEXEC", 1, -1, 0)
        clean = Replace(clean, "msiexec", vbCrLf & "msiexec", 1, -1, 0)
    ReplaceWithVBCRLF = clean
     
    End Function
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Novembre 2006
    Messages : 150
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par hackoofr Voir le message

    Inspirez-vous de cette discussion Regex dans la fonction replace
    Merci , mais ma question c'est surtout que dois-je mettre dans regExp.Pattern = " " pour être sur que ça match ?

    Merci pour ta réponse ProgElecT, c'est au moins une solution temporaire
    plus longue, plus barbare, donc moins élégante..

  5. #5
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 180
    Points
    17 180
    Par défaut
    Salut

    Mettant mis à apprendre l'utilisation de RegExe depuis peu, j'ai fait un petit programme pour tester le .Pattern
    Cela pourrait donner une fonction de se type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Function ReplaceWithVBCRLF(script)
    Dim RegularExpress
    Dim MotRech(8), Patter, MotRepl
    Dim Cpt
    Dim Clean
     
    MotRech(0) = "if": MotRech(1) = "del": MotRech(2) = "deltree": MotRech(3) = "msiexec"
    MotRech(4) = "IF": MotRech(5) = "DEL": MotRech(6) = "DELTREE": MotRech(7) = "MSIEXEC"
     
    Clean = script
    Set RegularExpress = New RegExp
    RegularExpress.Global = True
    RegularExpress.IgnoreCase = False
     
    For Cpt = 0 To UBound(MotRech) - 1
        RegularExpress.Pattern = "\s\b" & MotRech(Cpt)
        MotRepl = vbNewLine & MotRech(Cpt)
        Clean = RegularExpress.Replace(Clean, MotRepl)
    Next
    Set RegularExpress = Nothing
     
    ReplaceWithVBCRLF = Clean
     
    End Function
    Appel de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'exemple d'utilisation
    Dim TextSoumis
    TextSoumis = "Private Sub Option1_Click(Index As Integer)" & vbNewLine & _
            "If Index = 0 Then RegularExpressioN.IgnoreCase = False: if truc Then machin" & vbNewLine & _
            "If Index = 1 Then RegularExpressioN.IgnoreCase = True" & vbNewLine & _
            "End Sub"
    '"if truc Then machin" va se retrouvé sur une ligne distincte,
    'les autres "if" ne vont pas être affectés par le replace
    Msgbox ReplaceWithVBCRLF(TextSoumis)
    Je le répète, j'apprend
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Novembre 2006
    Messages : 150
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    Salut

    Mettant mis à apprendre l'utilisation de RegExe depuis peu, j'ai fait un petit programme pour tester le .Pattern
    Cela pourrait donner une fonction de se type


    Je le répète, j'apprend
    Merci , j'ai testé ta fonction mais ça me renvoit la string à l'identique..

  7. #7
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 180
    Points
    17 180
    Par défaut
    Avec l'exemple proposé, cela donne un bon résultat, mais ton texte soumis n'est peut être pas structuré à l'identique.
    Essais de remplacer la ligne 16 par RegularExpress.Pattern = "\b" & MotRech(Cpt)mais tu auras un retour à la ligne pour chaque occurrence.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

Discussions similaires

  1. Besoin d'aide pour remplacer avec expression régulière sur plusieurs lignes
    Par MediaVistaIntel dans le forum Général Python
    Réponses: 11
    Dernier message: 01/12/2011, 14h19
  2. Réponses: 4
    Dernier message: 14/11/2008, 21h00
  3. Expression régulière pour remplacer une apostrophe
    Par syrius31 dans le forum Langage
    Réponses: 3
    Dernier message: 04/04/2008, 20h34
  4. [RegEx] expression régulière pour remplacer des balises
    Par oceanbigone dans le forum Langage
    Réponses: 5
    Dernier message: 29/05/2007, 18h11
  5. Expression régulière pour plusieurs remplacements
    Par mickael99 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 22/02/2006, 12h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo