Verifier une expression de la forme (xxxxxxx;xxxxxxx;xxxxx) [Résolu]

Messages postés
3
Date d'inscription
dimanche 15 juin 2014
Dernière intervention
24 juin 2014
- - Dernière réponse : KX
Messages postés
15858
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 décembre 2018
- 15 juin 2014 à 22:57
Bonjour,
je veut verifier si la ligne en entrée contient une expression de la forme (xxxx;xxxx;xxxx) avec xxxx ensemble de caractère(peut etre cractère spéciale ou un numero ou n'importe quel caractère . pour cela j'ai ecrit le code suivant
public static boolean isforme(String chaine)
{
Pattern pattern = Pattern.compile(".*(.*;.*;.*).*");
Matcher matcher = pattern.matcher(chaine);
return(matcher.find());
}

mais le problème qu'il parait faux mais j'arrive pas à detecter le problème.
j'espère que vous pouvez m'aider et merci d'avance.
Afficher la suite 

Votre réponse

1 réponse

Messages postés
15858
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 décembre 2018
0
Merci
Bonjour,

Il y a des caractères spéciaux dans les expressions régulières, et les parenthèses en font partis, il faut donc les échapper avec des \\

De plus, dans ton exemple tu as 3 points virgules, mais dans ton expression tu n'en as que 2. Il faut donc avoir le bon compte.
Et pour cela il faut aussi s'assurer que dans tes .* tu n'ais pas un point virgule qui se promène, pour ça il faudrait plutôt utiliser [^;]*

J'en profite pour utiliser directement la méthode matches de la classe String plutôt que de passer par un Pattern/Matches superflue.

public class Test
{
    public static boolean isforme(String chaine)
    {
        return chaine.matches("\\([^;]*;[^;]*;[^;]*\\)");
    }
    
    public static void main(String[] args)
    {
        System.out.println(isforme("(xxxxxxx;xxxxxxx;xxxxx)"));
    }
}
La confiance n'exclut pas le contrôle
Commenter la réponse de KX

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.