ПХП - как сделать логическое "И" в условии для preg_match ?

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

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

    betatest

    Регистр.:
    3 дек 2007
    Сообщения:
    517
    Симпатии:
    127
    кто знает, как реализовать в ПХП регулярное выражение для использования проверки в preg_match на соответствие строки
    т.е. например, есть строки

    1) "diadia sahsa kormit taniu v rot nogami"
    2) "mama tani sahsu kormit pirogami"
    3) "nefig bilo tani k diade lezt kogda ne nado"
    4) "i bez nogi vo rtu bilabi sashe rada"

    обязательное условие - присутствие в предложении "sahs" и "tani"
    т.е. при проверке 1 и 2 строки должны удовлетворять условию, а 3 и 4 - нет

    нид хелп - как будет выглядеть регулярка
     
  2. alfaexpert

    alfaexpert

    Регистр.:
    23 июл 2008
    Сообщения:
    183
    Симпатии:
    27
    Если не ошибаюсь то примерно так
    PHP:
    preg_match('/word1|word2/Uis',$in,$out);
    В регулярке все что разделяется | такой чертой является условным оператором
     
  3. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Вот
    Код:
    /\b(?:sahsu\b.*\btaniu|taniu\b.*\bsahsu)\b/is
    
     
  4. betatest

    betatest

    Регистр.:
    3 дек 2007
    Сообщения:
    517
    Симпатии:
    127
    это или, а не и
    т.е. работает или то или то, а надо и то и то

    Добавлено через 2 минуты
    а если там не 2 а несколько условий будет?
    что, только в несколько заходов делать?
     
  5. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Тогда лучше всего сделать несколько регулярок.

    Добавлено через 2 минуты
    Хотя нет. Если надо просто проверить, совпадает строка или нет, можно
    Код:
    /^(?=.*\bword1\b)(?=.*\bword2\b)(?=.*\bword3\b)/si
    
     
    betatest нравится это.
  6. betatest

    betatest

    Регистр.:
    3 дек 2007
    Сообщения:
    517
    Симпатии:
    127
    вот, отлично, работает, а то каждая лишняя проверка при проверке дикого количества строк - это пипец, благодарю
     
Статус темы:
Закрыта.