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

Java Discussion :

Problème avec Pattern.matches


Sujet :

Java

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 464
    Points : 332
    Points
    332
    Par défaut Problème avec Pattern.matches
    Le bout de code suivant ne donne pas ce que j'attends
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    		s = "abbc";
    		String pattern = "a";
    		System.out.println(Pattern.matches(pattern, s));
    Je devrai recevoir true et je trouve false.
    Le site https://regex101.com/ me dit bien que je devrai recevoir true puisqu'il y a au moins un 'a' dans la chaîne testée, mais Java me répond false.
    Je précise que bien entendu cet exemple n'est là que pour expliciter un problème un peu plus ardu de REGEX.
    Je n'utiliserai pas une expression régulière pour savoir si une chaîne contient un a.
    Donc toute réponse du genre s.contains("a") n'apporte rien au problème.

    merci
    C'est en respectant les autres que l'on se fait respecter.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    il y a pourtant l'aspect intéressant que "contains" en anglais ça veut dire "contient" et que "matches" en anglais ça veut dire "correspond à".
    Il y en a pas un des deux qui te semble infiniment plus adapté que l'autre lorsque que tu veux "chercher à l'intérieur" d'un texte ?

    Mais puisque ce sont des regex, un comportement un peu complexe, que tu veux, le verbe qui devrait t'intéresser, c'est "find"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    s = "abbc";
    String pattern = "a";
     
    Matcher matcher = Pattern.compile(pattern).matcher(s);
    System.out.println(matcher.find());
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 464
    Points : 332
    Points
    332
    Par défaut
    Merci beaucoup à thelvin
    Comme je le disais, je devais utiliser des regex pour ce que je voulais faire et l'exemple donné ne nécessitait pas celles-ci.
    Cependant la réponse donnée m'a permis de comprendre : effectivement 'matches' signifie 'correspondre' donc Pattern.matches(motif,s) renvoie vrai si s correspond à motif
    dans le cas
    s = "abbc" et motif = "a", on voit bien que s ne correspond pas à motif

    par contre avec motif = "a.*" on a bien la réponse vrai
    Un petit supplément : si la chaîne "abbc" se termine par '\n' (retour chariot) alors il faut utiliser comme motif "(?s)a.*"

    Bon tout cela pour éviter de créer un Matcher n'est peut-être pas raisonnable, la solution de thelvin est préférable.
    C'est en respectant les autres que l'on se fait respecter.

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

Discussions similaires

  1. Problème avec fonction Match
    Par nicoptv dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/02/2016, 14h32
  2. Réponses: 8
    Dernier message: 16/11/2014, 10h57
  3. [XL-2003] VBA - Problème avec WorksheetFunction.Match
    Par oracle7556 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/07/2010, 16h02
  4. XSLT - Problème avec template match
    Par chris3544 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 29/07/2009, 08h23
  5. Problème avec MATCH - FULLTEXT
    Par Kosti dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/01/2006, 01h20

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