Pour faire correspondre un mot entier, vous devez utiliser le modèle suivant (\w+)
En supposant que vous utilisiez PCRE ou quelque chose de similaire :
La capture d'écran ci-dessus est tirée de cet exemple concret : https://regex101.com/r/FGheKd/1
Faire correspondre n'importe quel mot entier de la ligne de commande avec (\w+)
J'utiliserai le shell interactif phpsh en Ubuntu 12.10 pour démontrer l'efficacité de la Moteur regex PCRE par le biais de la méthode connue sous le nom de preg_match
Lancez phpsh, mettez du contenu dans une variable, faites correspondre les mots.
el@apollo:~/foo$ phpsh
php> $content1 = 'badger'
php> $content2 = '1234'
php> $content3 = '$%^&'
php> echo preg_match('(\w+)', $content1);
1
php> echo preg_match('(\w+)', $content2);
1
php> echo preg_match('(\w+)', $content3);
0
La méthode preg_match utilise le moteur PCRE du langage PHP pour analyser les variables : $content1
, $content2
y $content3
avec le (\w)+
modèle.
$content1 et $content2 contiennent au moins un mot, $content3 n'en contient pas.
Faire correspondre un certain nombre de mots littéraux sur la ligne de commande avec (dart|fart)
el@apollo:~/foo$ phpsh
php> $gun1 = 'dart gun';
php> $gun2 = 'fart gun';
php> $gun3 = 'farty gun';
php> $gun4 = 'unicorn gun';
php> echo preg_match('(dart|fart)', $gun1);
1
php> echo preg_match('(dart|fart)', $gun2);
1
php> echo preg_match('(dart|fart)', $gun3);
1
php> echo preg_match('(dart|fart)', $gun4);
0
Les variables gun1 et gun2 contiennent la chaîne dart ou fart. gun4 ne la contient pas. Toutefois, il se peut que le fait de rechercher le mot fart
correspondances farty
. Pour remédier à ce problème, il convient d'imposer des limites de mots dans les expressions rationnelles.
Faire correspondre les mots littéraux de la ligne de commande avec les limites des mots.
el@apollo:~/foo$ phpsh
php> $gun1 = 'dart gun';
php> $gun2 = 'fart gun';
php> $gun3 = 'farty gun';
php> $gun4 = 'unicorn gun';
php> echo preg_match('(\bdart\b|\bfart\b)', $gun1);
1
php> echo preg_match('(\bdart\b|\bfart\b)', $gun2);
1
php> echo preg_match('(\bdart\b|\bfart\b)', $gun3);
0
php> echo preg_match('(\bdart\b|\bfart\b)', $gun4);
0
C'est donc la même chose que dans l'exemple précédent, sauf que le mot fart
avec un \b
le mot frontière n'existe pas dans le contenu : farty
.