Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > regexp: текст не содержит слова


Автор: solenko 17.4.2008, 16:31
Здравствуйте.
Нужно проверять текст на отсутствие в нем слова. Почему-то даже не могу представить как ниписать такой шаблон.
Например:
Код

$text = "это тестовый пример";
$pattern =''; //абсолютно не представляю как написать, но тест на слово "пример"
preg_match($pattern, $text); //должен вернуть false
$pattern = ''; //а вот тест на "example"
preg_match($pattern, $text); // должен вернуть true


Ну и, предугадывая советы...
Мне действительно нужен ИМЕННО такой regexp и я не могу пересмотреть логику приложения, т.к. это стороннее приложение, одна из функций которого принимает как параметр regexp (это функциональные тесты)

Автор: SelenIT 17.4.2008, 16:46
Так?
Код

'/^(?>(?!пример).)*$/'

Автор: solenko 17.4.2008, 17:02
Спасибо. Работает.
Не буду слишком нагл, если попрошу объяснить принцип?
Меня обилие знаков вопроса загоняет в тупик  smile 

Автор: SelenIT 17.4.2008, 19:00
(?!пример) - позиция, за которой не следует слово "пример". Соответственно, (?!пример). - любой символ, не являющийся началом слова "пример".

(?> ... ) - однократная подмаска, по идее, должно способствовать ускорению.

Общий смысл - вся строка должна состоять из символов (любого кол-ва), не являющихся началом последовательности "пример".

Правда, в моем примере никак не учитывается граница слова, фразы со словами "например" и "примерно" он тоже не пропустит...

Автор: passer 18.12.2013, 17:46
Здравствуйте. Спасибо за подсказку. 
Но  я все равно ничего не понял((. 

Не моглибы вы обьяснить подробнее или дать ссылку на какую нить документацию в котором обьясняется что происходит когда пишешь (?>(?!

ведь (?> не для ускорения поиска.
без этого выражения вообще не работает. 

заранее спасибо за ответ. 

Автор: _zorn_ 19.12.2013, 07:58
http://phpclub.ru/detail/article/regexp_2

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)