1. #1
    Membre du Club
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 97
    Points : 49
    Points
    49

    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*?

  2. #2
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : décembre 2004
    Messages : 4 138
    Points : 8 320
    Points
    8 320

    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+@)
    ProgElecT
    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.
    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.

  3. #3
    Membre du Club
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 97
    Points : 49
    Points
    49

    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
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    4 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : décembre 2004
    Messages : 4 138
    Points : 8 320
    Points
    8 320

    Par défaut

    RegularExpressioN (OutputFile),"(\w+\.\w+\@)",(InputStrValue) & "@"
    RegularExpressioN OutputFile,"(\w+.\w+@)", InputStrValue & "@"
    ProgElecT
    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.
    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.

  5. #5
    Membre du Club
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 97
    Points : 49
    Points
    49

    Par défaut

    Merci pour la correction des parenthèses.
    J’avais pas vu que tu avais supprimé " \ " devant @.

  6. #6
    Membre du Club
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Tech maintenance Info
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2009
    Messages : 97
    Points : 49
    Points
    49

    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