web-dev-qa-db-fra.com

PHP preg_match pour trouver des mots entiers

Je suis assez nouveau pour les expressions régulières. Pourriez-vous m'aider à créer un modèle, qui correspond à des mots entiers, contenant une partie spécifique? Par exemple, si j'ai une chaîne de texte "Effectuer une correspondance d'expression régulière" et si je recherche express, elle devrait me donner expression, si je recherche formulaire, cela devrait me donner Perform et ainsi de suite. Vous avez l'idée?

24
tintix
preg_match('/\b(express\w+)\b/', $string, $matches); // matches expression
preg_match('/\b(\w*form\w*)\b/', $string, $matches); // matches perform,
                                                     // formation, unformatted

Où:

  • \b est une limite de Word
  • \w+ est un ou plusieurs caractères "Word"*
  • \w* est zéro ou plusieurs caractères "Word"

Voir le manuel sur séquences d'échappement pour PCRE.


* Remarque: bien qu'il ne s'agisse pas vraiment d'un "caractère Word", le trait de soulignement _ est également inclus dans la classe de caractères \w.

42
Linus Kleen

Cela correspond à "Perform":

\b(\w*form\w*)\b

Cela correspond à "expression":

\b(\w*express\w*)\b
4
Kyle Wild