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

C# Discussion :

REGEX - Trouver un mot


Sujet :

C#

  1. #1
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut REGEX - Trouver un mot
    Bonjour,

    Je dois mettre en place un script de nettoyage des emails, en filtrant notamment sur l'objet de ces emails. L'objectif étant de supprimer l'ensemble des emails personnels d'une base de données.

    J'ai donc une liste de mots clefs à filtrer, parmis lesquels "perso" (pour personnel). Si on a un match, il faut supprimer l'email.

    On peut rencontrer différents scénarios :
    - multitude de TR: / RE: / FW: / AW: avant le mot "perso"
    - l'objet contient des mots comme "personne", "personnalité"...

    Bref, je pense que le mieux reste d'utiliser les Regex. Mais je n'y connais rien, et je n'arrive pas à trouver ce que je cherche sur Internet.

    Pourriez-vous m'aider à construire une Regex qui me permette de trouver le mot "perso" (mais pas personne) ?

    Merci par avance !
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  2. #2
    Membre confirmé Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Points : 527
    Points
    527
    Par défaut
    Salut,

    Regarde de ce coté : http://lgmorand.developpez.com/dotnet/regex/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Text.RegularExpressions.Regex myRegex = new Regex("(lut|salut|yop)");
    Regarde de ce coté : http://lgmorand.developpez.com/dotnet/regex/
    Je fais ce que je dis et je dis ce que je veux .

  3. #3
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Merci jacky01

    Je commençais à désespérer ... Mes précédentes recherches étaient trop spécifiques, d'où le fait que je ne trouvais pas de solution. Grâce à ton lien bien expliqué, j'ai réussi trouver quelque chose qui fonctionne.

    J'utilise donc :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    Regex myRegex = new Regex(@"[a-zA-Z].(\s(perso)\s)|(perso)\s|(perso)$");

    [a-zA-Z]. permet de passer les "préfixes" ("TR:" / "RE:" / "FW:" / "AW:" etc.) et leur combinaison ("TR: RE: ..." par exemple).

    (\s(perso)\s)|(perso)\s|(perso)$ me permet de rechercher "perso", soit avec un espace après, soit en fin de chaîne de caractère, soit au début. On a donc un match avec "RE: TR: perso" ou encore avec "FW: perso déjeuner", ou encore avec "perso déjeuner"...

    Si vous voyez un moyen de simplifier la regex en la factorisant par exemple, n'hésitez pas à me le signaler, c'est vraiment la première fois que j'utilise une regex
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  4. #4
    Membre confirmé Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Points : 527
    Points
    527
    Par défaut
    Niquel.

    Pour ce qui est de l'optimisation je ne suis pas au top non plus .

    Mais si ça marche c'est l'essentiel.
    Je fais ce que je dis et je dis ce que je veux .

  5. #5
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par jacky01 Voir le message
    Mais si ça marche c'est l'essentiel.
    C'est sûr !

    Petite correction au passage, la regex est la suivante :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    Regex myRegex = new Regex(@"[a-zA-Z.](\s(perso)\s)|(perso)\s|(perso)$");
    (dans [a-zA-Z.], le point est dans les crochets et non à l'extérieur).

    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

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

Discussions similaires

  1. MYSQL REGEX, trouver un mot precis
    Par blazed dans le forum Débuter
    Réponses: 2
    Dernier message: 27/01/2015, 21h31
  2. [Regex] Trouver les mots entre certains autres mots
    Par lequebecois79 dans le forum Langage
    Réponses: 0
    Dernier message: 13/02/2012, 20h57
  3. [RegEx] Trouver des mots clés avec une regex
    Par gene69 dans le forum Langage
    Réponses: 7
    Dernier message: 19/07/2011, 10h59
  4. une regex simple : trouver un mot en 6 majuscules
    Par EnRadeSurEclipse dans le forum Requêtes
    Réponses: 6
    Dernier message: 21/05/2010, 15h55
  5. Regex: trouver une chaine et prendre le mot d'aprés
    Par Greg84 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 07/11/2008, 14h41

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