4 votes

Regex mot entier

Je me sens un peu bête de poser cette question, mais d'après tout ce que j'ai lu, cela devrait fonctionner et ce n'est pas le cas, pour moi. J'essaie simplement de faire correspondre un mot entier dans une chaîne en utilisant des expressions régulières.

Ainsi, si j'essaie de trouver le mot "the" dans une phrase, il devrait retourner vrai pour "the quick brown fox jumps over the lazy dog", mais retourner faux pour "there quick brown fox jumps over the lazy dog".

J'ai essayé ça :

 String text = "the quick brown fox jumps over the lazy dog";
 return text.matches("\\bthe\\b");

J'ai aussi essayé :

    String text = "the quick brown fox jumps over the lazy dog";
    String regex = "\\bthe\\b";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(text);

    return matcher.matches();

J'ai aussi essayé cette regex : " \bthe\b "

Et ils renvoient toujours des faux. J'ai l'impression de passer à côté de quelque chose d'évident, alors que cela ne devrait pas être trop difficile :)

7voto

Si vous utilisez matches il doit correspondre à l'ensemble de la chaîne. String#contains(...) est peut-être ce que vous recherchez, ou peut-être voulez-vous mettre des jokers avant et après votre mot :

String regex = ".*\\bthe\\b.*";

Par exemple,

  String text = "the quick brown fox jumps over the lazy dog";
  System.out.println(text.matches(regex));

6voto

3voto

Hari Shankar Points 9405

Essayez cette regex :

".*\\bthe\\b.*"

En fait, ce que vous essayez de faire correspondre est la chaîne "the", mais vous devez retourner une correspondance même si l'entrée contient d'autres choses, donc vous devez mettre ".*" des deux côtés pour cela.

0voto

zneak Points 45458

Bzzt ! Il reviendra naturellement true pour la deuxième phrase, puisque le mot the apparaît deux fois : Le site le renard brun et rapide saute par-dessus le site chien paresseux". Votre deuxième phrase a toujours la deuxième le site .

Votre regex est correct. Cependant, vous devrez utiliser l'option Pattern.find  au lieu de matches parce que matches tente de trouver une correspondance avec la chaîne entière. Pattern.find d'autre part, localisera les sous-chaînes qui correspondent à votre modèle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X