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

nsrms 3 Messages postés dimanche 15 juin 2014Date d'inscription 24 juin 2014 Dernière intervention - 15 juin 2014 à 22:37 - Dernière réponse : KX 15681 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 19 août 2018 Dernière intervention
- 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

KX 15681 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 19 août 2018 Dernière intervention - Modifié par KX le 15/06/2014 à 23:02
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.