регулярка Найти текст, содержащий до 4 слов между словами

Тема в разделе "Регулярные выражения", создана пользователем dandandan, 19 окт 2011.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    Есть текст в utf-8
    Нужно найти слова, содержащие такую конструкцию:
    взрослые (до 4 слов. Так же могут быть любые знаки и символы, но хотя бы 1 слово (даже союз подойдет)) головоломки
    делаю на php
    PHP:
    $text='взрослые мужчинки, ) головоломки женщины мужчинки, слово sdf ) женщины головоломки, взрослые мужчинки и тут головоломки';
    $pattern="/взрослые.*(\b){0,4}головоломки/Uis"// слишком много откусывает текста, берет больше слов между словами.
    $pattern="/взрослые[^A-Za-z0-9_А-ЯЁа-яё](?:\b){1,4}[^A-Za-z0-9_А-ЯЁа-яё ]головоломки/Uis"// тоже неправильно пашет.
    preg_match_all($pattern$text$matches);
    Из текста надо выдернуть:
    • взрослые мужчинки, ) головоломки
    • взрослые мужчинки и тут головоломки
    Какой шаблон использовать?
     
  2. wal

    wal Постоялец

    Регистр.:
    24 мар 2008
    Сообщения:
    89
    Симпатии:
    30
    PHP:
    $pattern="/взрослые(\s+\S+){1,4}?\s+головоломки/";
     
    dandandan нравится это.
Статус темы:
Закрыта.