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 :

Création pattern "REGEX"


Sujet :

VBScript

  1. #1
    Invité
    Invité(e)
    Par défaut Création pattern "REGEX"
    Bonjour,

    Dans le texte ci-dessous*:

    Le domaine pour l’adresse prenom.nom@developpez.fr n’est pas valide, merci d’utiliser l’adresse prenom.nom@developpez.com
    J’utilise le pattern et identifie la chaîne prenom.nom@

    J’aimerai que mon pattern prenne en charge lors du remplacement seulement ce qui est juste avant mon @ a condition qu’il soit bien présent.

    Donc si prenom.nom est détecté on ne fait rien, mais si prenom.nom@ est trouvé on remplace prenom.nom par machin.chose.

    Pouvez-vous m’aider a définir le bon pattern*?
    Dernière modification par Invité ; 31/10/2017 à 13h23.

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 078
    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 078
    Points : 17 110
    Points
    17 110
    Par défaut
    Salut
    [
    (\w+\.\w+@) pour le Pattern et "machin.chose@" pour le Replace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RegularExpressioN.Pattern = "(\w+\.\w+@)"
    MsG = RegularExpressioN.Replace ("Donc si prenom.nom est détecté on ne fait rien, mais si prenom.nom@.domaine.fr est trouvé on remplace prenom.nom par machin.chose.", "machin.chose@")
    MsgBox MsG
    Dans la méthode Replace, tout se qui correspond au contenu dans les parenthèses et remplacé, donc dans ton cas l'@ et trouvé donc il faut l'ajouter au machin.chose.

    Ajout d'informations
    Phrase de départ:
    Donc si prenom.nom est détecté on ne fait rien, mais si prenom.nom@.domaine.fr est trouvé on remplace prenom.nom par machin.chose.
    Donc si prenom.nom est détecté on ne fait rien, mais si machin.chose@.domaine.fr est trouvé on remplace prenom.nom par machin.chose.
    Si dessus après le Replace
    Ce pattern est suffisant pour un même résultat: (\w+.\w+@)
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,
    Voila comment j’ai géré la chose :
    Grace a mon InputBox je choisi ma sous chaine de remplacement.
    Si je renseigne machin.chose on est d’accord que mon pattern de remplacement sera en fait (\w+\.\w+) et nom pas (\w+\.\w+@)
    Dans ce cas rien ne m’empêche d’ajouter mon @ depuis le code à la fin de variable saisi dans mon InputBox ?


    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Option Explicit
     
    ' fonction de correspondance d'expressions réguières 
    '(FichierCible, ChaineRecherchée, ChaineDeRemplacement)
     
    Function RegularExpressioN(OutputFile,StrSearch,StrReplace)	
    	Dim ObjShell, Fso 
    	Set objShell = CreateObject("WScript.Shell") 
    	Set Fso = CreateObject("Scripting.FileSystemObject")
    	If Fso.FileExists(InputFile) = True Then	 
     
    		Dim oRegEx, MyFile, sStream, sNewStream		
     
    		Set oRegEx = New RegExp		'Création de l'expression régulière.
    		With oRegEx
    			'.IgnoreCase = True	'Rendre insensible à la casse.
    			.Global = True		'Recherche dans la chaîne entière.		
    			.Pattern = StrSearch	'Défini la chaine de recherche "Schéma de recherche".
    		End With
     
    		Set MyFile = Fso.OpenTextFile(InputFile,1) 
    		sStream = MyFile.ReadAll
    		MyFile.Close
     
    		sNewStream = oRegEx.Replace(sStream,StrReplace)
     
    		If InStr(sNewStream,StrReplace) = True Then	'Test si la correspondance est faite.
    			sNewStream = Replace(sNewStream,StrReplace,1,1)	'Execution du remplacement.
    		End If
     
     		If Not (Fso.FileExists(OutputFile)) Then Fso.CreateTextFile(OutputFile)
    		Set MyFile = Fso.OpenTextFile(OutputFile,2)	
    		MyFile.Write sNewStream
    	 	MyFile.Close
    	 	objShell.Run("notepad " & OutputFile)
    	Else	
    		MsgBox "Le fichier source est introuvable",Vbcritical,"Erreur"	
    	End If	
     
    End Function
     
    Dim DossProg, InputFile, OutputFile, InputStrValue
     
    DossProg = replace(WScript.ScriptFullName,WScript.ScriptName,"")
    InputFile = DossProg & "source\SourceFile.txt"
    OutputFile = DossProg & "Commande-PowerSchell.txt"
     
    InputStrValue = InputBox ("Entrer l'identifiant a router." & vbNewLine & _
    							vbNewLine & "Il doit être de type:" & _ 
    							vbNewLine & "prenom.nom" & _
    							vbNewLine & "ou" & _
    							vbNewLine & "service.fonction" & vbNewLine,"My messenger")
    RegularExpressioN (OutputFile),"(\w+\.\w+\@)",(InputStrValue) & "@"

  4. #4
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 078
    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 078
    Points : 17 110
    Points
    17 110
    Par défaut
    RegularExpressioN (OutputFile),"(\w+\.\w+\@)",(InputStrValue) & "@"
    RegularExpressioN OutputFile,"(\w+.\w+@)", InputStrValue & "@"
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci pour la correction des parenthèses.
    J’avais pas vu que tu avais supprimé " \ " devant @.

  6. #6
    Invité
    Invité(e)
    Par défaut
    J’ai un petit souci !
    Si dans le texte source j’ai par exemple tintin135@ il est remplacé quand même
    Pourtant je spécifie bien le " . " dans mon pattern.
    Une idée ?

    J'ai trouvé
    (\w+\.\w+@)
    Tu avais aussi enlevé celui-ci

+ Répondre à la discussion
Cette discussion est résolue.

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