2009-09-06 10 views
2

C'est bizarre, parce que si je prends cette regex et que je teste la chaîne sur rubular.com, cela montre deux correspondances. Qu'est-ce que je fais mal?Java Regex ne fonctionne pas - pourquoi? Match.matches() renvoie la valeur false.

Pattern regex = Pattern.compile("FTW(((?!ODP).)+)ODP"); 
    Matcher match = regex.matcher("ZZZMMMJJJOOFTWZMJZMJODPZZZMMMJJJOOOFTWMZJOMZJOMZJOODPZZZMMMJJJOO"); 

    if (match.matches()) { 
     System.out.println("match found"); 
    } 
    else { 
     System.out.println("match not found"); 
    } 

Répondre

12

Matcher.matches indique si oui ou non la région correspond au modèle. Utilisez à la place find. (Certainement avec votre exemple, cela fonctionne très bien.)

8

La méthode Matcher.matches() essaie de faire correspondre la chaîne entière au motif. Changez votre modèle pour:

".*FTW(((?!ODP).)+)ODP.*" 
Questions connexes