Вкратце.
Примерно есть такой шаблон, ещё не подогнан под регулярку:
Слово1 Слово2 %w{1,10} Слово9
Полный текст сообщения:
Слово1 Слово2 Слово3 - Слово4_ Сло-во5 -Сло!во6 Сло*во7 Сло/во8 Слово9
Где: %w{1,n} – ограниченная последовательность слов (состоящих из букв, цифр или спецсимволов описанных ниже), разделенных пробелом (или несколькими пробелами), где n – число слов (слов должно быть не менее 1 и не более чем n);
Мои попытки
$str = 'Слово1 Слово2 Слово3 - Слово4_ Сло-во5 -Сло!во6 Сло*во7 Сло/во8 Слово9';
preg_match('/^Слово1 Слово2 (\b[\S]+\b[\s]*){1,10} Слово9/u', $str) //Не дает результат, т.к. -Сло!во6 изза дефиса перед словом не соответствует этой регулярке - \b[\S]+\b[\s]. Да и как отдельное слово дефис - также не окружается краями \b
Короче я целый день промучился, но так и не смог решить правильно написать регулярку
Пробовал и так ([^\s\w\d]*\b[\S]+\b[^\s\w\d]*)
и так /^Слово1 Слово2 (([\S]+[\s]+[\S]+){1,10}) Слово9$/u
В общем спасибо заранее и жду ваших комментариев.
P.S - Не забывать что в этой регулярке может быть и одно слово, и слово состоящее из одного символа/буквы
--------------------------------------------------------------
Если кому интересно, то нашел примерно такой вариант решения
/^Уважаемый клиент, такси ожидает вас\. ((([\s]+)|(^)|(?<=[\s]))(([^\s\w\d]*\b[\S]+\b[^\s\w\d]*)|([^\s\w\d]+))){1,10}\. С уважением такси такси\.$/u