Utilisez cet exemple en ligne pour tester votre modèle :
La capture d'écran ci-dessus est tirée de cet exemple en direct : https://regex101.com/r/cU5lC2/1
Correspondance de tout mot entier sur la ligne de commande.
Je vais utiliser le phpsh interactive shell en Ubuntu 12.10 pour démontrer la Moteur de regex PCRE par 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 mot spécifique sur la ligne de commande sans les primes de mots
el@apollo:~/foo$ phpsh
php> $gun1 = 'dart gun';
php> $gun2 = 'fart gun';
php> $gun3 = 'darty 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
Variables gun1
y gun2
contiennent la chaîne de caractères dart
o fart
ce qui est correct, mais le pistolet3 contient darty
et correspond toujours, c'est ça le problème. Passons donc à l'exemple suivant.
Faites correspondre des mots spécifiques de la ligne de commande avec des frontières de mots :
Word Boundaries peut être jumelé avec \b
voir :
Regex Visual Image acquise à partir de http://jex.im/regulex y https://github.com/JexCheng/regulex Exemple :
el@apollo:~/foo$ phpsh
php> $gun1 = 'dart gun';
php> $gun2 = 'fart gun';
php> $gun3 = 'darty 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
Le site \b
affirme qu'il y a une frontière entre les mots, en s'assurant que " dart " est compatible, mais que " darty " ne l'est pas.