PCRE сопоставление целых слов в строке - PullRequest
6 голосов
/ 05 октября 2011

Я пытаюсь запустить регулярное выражение в php (preg_match_all), которое соответствует определенным целым словам в строке, но проблема в том, что оно также соответствует словам, которые содержат только часть проверенного слова.Также это подзапрос в большем регулярном выражении, поэтому другие функции PHP, такие как strpos, не помогут мне, к сожалению.

String : "I test a string"

Соответствующие слова : "testable", "string"

Пробное регулярное выражение : /([testable|string]+)/

Ожидаемый результат : "string"только!

Результат : "test", "a", "string"

Ответы [ 2 ]

10 голосов
/ 05 октября 2011

Если вы действительно хотите убедиться, что вы получаете только свои слова, а не слова, которые их содержат, то вы можете использовать привязки к словам:

/\b(testable|string)\b/

Это будет соответствовать только границе слова, за которой следует либо testable или string, а затем еще одна граница слова.

2 голосов
/ 05 октября 2011

Вам не нужен класс символов с [], вы просто хотите сопоставить слова:

/testable|string/

...