Для відповідності будь-якому цілому слову ви використовували б шаблон (\w+)
Припускаючи, що ви використовуєте PCRE або щось подібне:
Знімок екрана, зроблений із цього реального прикладу: http://regex101.com/r/cU5lC2
Відповідність будь-якого цілого слова в командному рядку з (\w+)
Я буду використовувати інтерактивну оболонку phpsh в Ubuntu 12.10 для демонстрації механізму регулярних виразів PCRE за допомогою методу, відомого як preg_match
Запустіть phpsh, додайте вміст у змінну, збігаючись із словом.
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
Метод preg_match використовував PCRE двигун в мові PHP для аналізу змінних: $content1
, $content2
і $content3
з (\w)+
малюнком.
$ content1 і $ content2 містять принаймні одне слово, $ content3 - ні.
Зіставте ряд буквальних слів у командному рядку з (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
змінні gun1 та gun2 містять рядок dart або fart. gun4 - ні. Однак це може бути проблемою , яка шукає слова fart
сірників farty
. Щоб це виправити, застосуйте межі слів у регулярному виразі.
Установіть відповідність між буквальними словами в командному рядку та межами слів.
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
Так що ж , як і в попередньому прикладі , за винятком , що слово fart
з \b
кордоном слова не існує в змісті: farty
.