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
    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 175
    Points
    17 175
    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+@)
    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 ← ← 👈

  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
    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 175
    Points
    17 175
    Par défaut
    RegularExpressioN (OutputFile),"(\w+\.\w+\@)",(InputStrValue) & "@"
    RegularExpressioN OutputFile,"(\w+.\w+@)", InputStrValue & "@"
    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 ← ← 👈

  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