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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Novembre 2006
    Messages : 150
    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 confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut

    Inspirez-vous de cette discussion Regex dans la fonction replace

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

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    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
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 150
    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
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    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
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 150
    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
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    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.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → 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