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

Collection et Stream Java Discussion :

Question sur les expressions régulières


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Points : 55
    Points
    55
    Par défaut Question sur les expressions régulières
    Salut, j'essaye d'utiliser une expression régulière pour vérifier un nom entré dans une jtextarea.

    Je voudrais n'autoriser que les lettres de l'alphabet (minuscules et majuscules, avec ou sans accents), les chiffres et quelques caractères en plus (espace " ", tirets "-" et "_" et point ".")

    Le problème, c'est que j'y comprend pas grand chose aux expressions régulières...

    Pour l'instant j'ai commencé par coder ça :
    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
    try
    {
    	if(!name.equals(""))
    	{
    		Matcher matcher;
    		Pattern pattern = Pattern.compile("[0-9A-Za-z_(1,)]");
    		matcher = pattern.matcher(name);
    		System.out.println(matcher.group());
    		if(matcher.groupCount() != 1)
    			ok = false;
    	}
    	else
    		ok = false;
    }
    catch(Exception e)
    {
    	System.out.println(e);
    }
    Et ça ne marche pas...
    Mais ça me renvoie "illegalStateException : No match found"

    Quelqu'un saurait comment faire ? J'ai regardé quelques tutoriaux mais je ne vois pas comment faire ce que je veux...

    Merci d'avance !!

  2. #2
    Membre confirmé Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Points : 474
    Points
    474
    Par défaut
    Salut,
    L'expression régulière que tu dois utiliser est :
    Pour faire un test de match, tu peux tout simplement utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String chaine = "plop" ;
    boolean ok = chaine.matches("[0-9a-zA-Z _.-]") ;
    Plus d'infos : http://java.sun.com/j2se/1.5.0/docs/...a.lang.String)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Points : 55
    Points
    55
    Par défaut
    Merci pour la réponse, mais ça ne fonctionne pas complètement malheureusement...

    En fait ça fonctionne pour un String d'un seul caractère, et là ça fait exactement ce que je veux, sauf pour les accents qui ne passent pas.

    Du coup il y a deux possibilités :
    - Soit contourner le problème et boucler sur la longueur du mot à tester, et faire autant de test qu'il y a de caractère (solution tout à fait raisonable vu que mon appli est un travail personnel)
    - Soit il existe une expression rationnelle encore plus compliquée qui gère les mots de plus d'une lettre

    Du coup si quelqu'un voit comment résoudre le problème des accents, et celui des mots de plus d'une lettre, je suis preneur...

  4. #4
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Ca me déprime comme personne ne va voir les tutos, sources et faq du site... Pour les questions simple de ce genre il y a toujours une réponse :

    http://cyberzoide.developpez.com/java/regex/

    C'est en faisant ça que j'ai beaucoup appris en java grâce à developpez.com, les posts ne servent que dans des cas plus évolués ou plus particulier.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  5. #5
    Membre habitué Avatar de faico
    Inscrit en
    Août 2005
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 242
    Points : 179
    Points
    179
    Par défaut
    SAlam,
    tu peux utiliser l'expression suivante pour un nombre indeterminé de caractere
    ou
    pour avoir au moin un caractere
    ou
    pour avoir un nomre de char entre n et m
    cetet expression prend en compte les accents

  6. #6
    Membre habitué Avatar de faico
    Inscrit en
    Août 2005
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 242
    Points : 179
    Points
    179
    Par défaut
    Salam,
    et pour ton prorgamme utilise le code suivant :
    package test;

    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
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
    public class Test {
    	public static void main(String args[]) {
    		try {
    			String name="zaée-89";
    			boolean ok=false;
    			if (!name.equals("")) {
    				Matcher matcher;
    				Pattern pattern = Pattern.compile("^[\\p{L}0-9_.-]*$");
    				matcher = pattern.matcher(name);
    				System.out.println("ok="+matcher.find());
    				/*System.out.println(matcher.group());
    				if (matcher.groupCount() != 1)
    					ok = false;*/
    			} else
    				ok = false;
    		} catch (Exception e) {
    			System.out.println(e);
    		}
    	}
    }

Discussions similaires

  1. [grep] Une question sur les expressions régulières
    Par Bahan_auboulot dans le forum Linux
    Réponses: 5
    Dernier message: 04/12/2008, 19h12
  2. [RegEx] question sur les expressions régulières
    Par vasilov dans le forum Langage
    Réponses: 2
    Dernier message: 20/06/2008, 16h25
  3. question sur les expressions régulières
    Par goanes dans le forum Langage
    Réponses: 2
    Dernier message: 02/09/2007, 23h34
  4. Question sur les expressions régulières
    Par espadon1 dans le forum Langage
    Réponses: 2
    Dernier message: 05/07/2006, 08h59

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