Нуждаюсь в помощи с регуляркой

  • Автор темы Автор темы norway
  • Дата начала Дата начала

norway

Новичок
Нуждаюсь в помощи с регуляркой

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

Ткните :)

-~{}~ 16.03.09 22:55:

Ах да, слова отделяются пробелами, коих количество может быть любым, т.е. \s+
 
explode, array_map(trim), array_uniq, count. хотя можно прост эксплод и дальше ручками
 
Автор оригинала: Mr_Max
Как пробовал?
Пока я не осознал, что слова могут следовать в произвольном порядке все было радужно. Можно ли вообще такие предложения выразить одной регуляркой?
 
Армян
преклоняюсь перед умением понимать вопросы в виде потока сознания :) Я вот только уже после второго поста ТСа понял, что ему нужно (надеюсь, что правильно).

т.е. повторения невозможны:
Не могут быть теоретически, или не нужно учитывать такие вхождения в которых есть последовательность типа "мама мама щурясь" или "рама хищно рама"?
 
Не нужно учитывать.
Как сделать в 10-15 строк кода я знаю, но лень призывает найти способ с одной строчкой
 
norway
Тебе даже палец о палец ударить лень.
Ждешь пока тебе преподнесут готовое.
И вообще что за боязнь 15 строчек?
Это типо неправильно?

З.ы.
Форум не предназначен для решения своих задач чужими руками.
Показываешь что делал, как делал, что получалось/не получалось.
 
norway советую тебе для себя открыть другие факторы, кроме лени или начинать лениться в долгосрочной перспективе
 
Армян
Далеко не несколько. ;)
 
$str = "Стою на асфальте я в лыжи обутый. Или лыжи не едут или я ебанутый.";

$arr = array('асфальт', 'лыжи', 'обутый', 'едут', 'ебанутый', 'в');

preg_match_all("!".join("|", $arr)."!usi", $str, $found);
shuffle($found[0]);
$res = join(' ', array_map('trim', array_unique($found[0])) );

echo $res;
 
Сверху