[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не учитывать символы в регулярном выражении
ZubeQ
Ищу в тексте совпадение по определённому сочетанию (между словами могут быть другие слова или символы), составил небольшую функцию ,которая в зависимости от словосочетания генерирует регулярное выражение, однако оно не всегда срабатывает и мне необходимо, чтобы если между словами стоит точка, то такой вариант не учитывался.

Пример текста:
прежде всего, кофе смешать с коньяком, приготовить прямоугольную форму для сборки торта. 
бисквитное печенье савоярди обмакивать в кофе и выкладывать на дно формы так, чтобы оно было полностью закрыто.
торт бисквитный с начинкой из какао.


Пример сгенерированного выражения "торт бисквитный":
$count=preg_match_all("/торт[а-яА-Я]{1,5}\B[\sа-яА-Я0-9a-zA-Z()-–\+:,»«'|&\/]{1,13}б[ий]{1,1}скв[ий]{1,1}т[а-яА-Я]{1,5}\B/iu", $text, $matches);


Находит следующее:
Array ( [0] => Array ( [0] => торта. бисквитное ) )


т.е. с точкой между словами учлось, а просто "торт бисквитный" не учлось, в чём недочёты?



Спустя 5 минут, 31 секунда (26.10.2011 - 15:30) Winston написал(а):
Цитата (ZubeQ @ 26.10.2011 - 15:25)
а просто "торт бисквитный" не учлось, в чём недочёты?

Вместо
Цитата (ZubeQ @ 26.10.2011 - 15:25)
торт[а-яА-Я]{1,5}

Напиши
торт(?:[а-яА-Я]{1,5})?




Спустя 10 минут, 44 секунды Winston написал(а):
Ты еще в паттерн кучу ненужной фигни напихал, вот сокращенное немного.
preg_match_all("#торт(?:[а-яё]{1,5})?\B[\sа-яё\w()-–+:,»«'|&/]{1,13}б[ий]скв[ий]т[а-яё]{1,5}\B#iu", $text, $matches);

Результат
Array
(
[0] => Array
(
[0] => торт.
бисквитное
[1] => торт бисквитный
)

)

Спустя 2 часа, 15 минут, 41 секунда (26.10.2011 - 17:46) ZubeQ написал(а):
спасибо, буду иметь ввиду
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.