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 le carctère qui a été rejeté


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 224
    Par défaut RegEx : trouver le carctère qui a été rejeté
    Bonjour,

    J'utilise la RegEx suivante :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    rgx = new Regex(@"^[- .'_/\\a-zA-Z0-9çáàâéèêíîóùûúüñ]*$", RegexOptions.IgnoreCase);
    if (!rgx.IsMatch(monString))
    {
      // monString est rejetté
    }

    et j'essaye de réfléchir à un moyen simple pour connaitre l'index du ou des caractères qui ont fait que le regex n'a pas pu s'appliquer.

    J'imagine plusieurs façon de faire, mais nécessitant plusieurs lignes de codes. En existe t'il une simple ?


    Par exemple, je vois bien :

    --> Si le regex n'a pas fonctionné, alors je parcours les caractères un par un et je vois lequel est rejetté.

    --> Si le regex n'a pas fonctionné, je fais une recherche avec la regex inverse, et l'utilisation de la propriété rgx.Index me retournerait l'index du caractère qui m'a posé problème


    Quelle est la meilleure solution d'après vous ?

    D'avance merci.

  2. #2
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Pour toi c'est quoi la "meilleure solution" : la plus performante ? la plus élégante ? ...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 224
    Par défaut
    Bonjour Skalp,

    Merci,

    En fait, étant sujet à ce problème pour la première fois, je me demandais si d'autres personnes avaient déjà fait cela et me dire quelle était pour eux la meilleure solution.

    D'après moi, n'ayant pas encore trouvé d'autres solutions meilleures que les deux que j'ai cité, je trouve que la deuxième est plus élégante, mais peut être pas plus performante.. quoique... en fait si je pense que la deuxième est plus performante car 2 regexp vite fait bien fait.

    Je met donc le post en résolu, mais s'il y a une solution meilleure, je suis preneeur, merci

  4. #4
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Hum... et pourquoi tu ne ferais pas directement la recherche du caractère non voulu, ainsi, tu n'as besoin d'utiliser qu'une seule Regex :

    1. Je recherche le caractère non voulu avec la Regex "inverse"
    2. Si je le trouve, j'ai directement la position du caractère non voulu
    Si je n'en trouve aucun, ma chaine est ok

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 224
    Par défaut
    aaa... oui merci, cela me semble être la bien heureuse solution recherchée..

    merci Skalp

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

Discussions similaires

  1. Regex trouver ce qui est entre guillemet
    Par giova_fr dans le forum C#
    Réponses: 0
    Dernier message: 18/04/2013, 14h46
  2. [RegEx] Trouver la chaine rejetée
    Par ourselin dans le forum C#
    Réponses: 3
    Dernier message: 26/05/2008, 14h55
  3. Trouver une valeur qui n'est pas dans un champ
    Par eric41 dans le forum Requêtes
    Réponses: 6
    Dernier message: 16/05/2006, 16h48
  4. Ou trouver les informations qui defile lors du boot ?
    Par piff62 dans le forum Administration système
    Réponses: 2
    Dernier message: 17/03/2005, 17h19
  5. Réponses: 3
    Dernier message: 21/01/2004, 08h47

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