ФорумПрограммированиеPHP для идиотов → Помогите составить регулярку.

Помогите составить регулярку.

  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 11 февраля 2012 г. 13:11

    На первый взгляд задачка простая, но решить не могу.

    Нужно найти все предложения, заключенные в <div>, в которых встречается слово EAT и\или DRINK.

    1. <div>qweqwe EAT asdasd DRINK</div>
    2. <div>qweqwe DRINK asdasd EAT asdasd</div>
    3. <div>qweqwe asdasd DRINK adsasd</div>
    4. <div>EAT asdasd asd</div>
    5. <div>qweqwe asdasdasd asd</div>

    Регулярка должна найти все, кроме 5-го предложения.
    Спустя 216 сек.
    Интересует все предложение между тегами <div>, а не только эти слова.
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 11 февраля 2012 г. 13:20, спустя 8 минут 47 секунд

    ~>(.*?(?:EAT|DRINK).*?)<~
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 11 февраля 2012 г. 13:39, спустя 19 минут


    ~>(.*?(?:EAT|DRINK).*?)<~
    ну как вариант да
    Сапожник без сапог
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 11 февраля 2012 г. 13:45, спустя 6 минут 45 секунд

    ну как вариант да

    как бы сделал о великий гуру дуд?)
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 11 февраля 2012 г. 13:56, спустя 10 минут 53 секунды

    Frozzeg, дело не в гуру/сделал, дело в том, что если появятся у тебя хтмл теги в этих дивах, то твоя регулярка уже не сработает))
    Сапожник без сапог
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 11 февраля 2012 г. 14:00, спустя 3 минуты 54 секунды


    Frozzeg, дело не в гуру/сделал, дело в том, что если появятся у тебя хтмл теги в этих дивах, то твоя регулярка уже не сработает))

    конкретно в моем случае такого случится не может, так что все ок )
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 11 февраля 2012 г. 14:04, спустя 3 минуты 56 секунд

    Frozzeg, ну тогда все норм :-)
    Сапожник без сапог
  • master

    Сообщения: 3236 Репутация: N Группа: Джедаи

    Spritz 11 февраля 2012 г. 14:15, спустя 11 минут 15 секунд

    $xml = simplexml_load_file('file');
    foreach ($xml->xpath('//div') as $div){
    $k = (string)$div;
    if (stripos($k, 'eat') !== null || stripos($k, 'drink') !== null){
    ололо
    }
    }
    не всё полезно, что в swap полезло
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 11 февраля 2012 г. 14:47, спустя 31 минуту 35 секунд

    хотел так сделать, но как-то не красиво )
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 11 февраля 2012 г. 15:15, спустя 28 минут 25 секунд

    регулярки рулят, разборщики тупят
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 11 февраля 2012 г. 15:28, спустя 12 минут 35 секунд


    регулярки рулят, разборщики тупят


    +1

    только учти, что под твой жадный сбор (.*) вполне подойдет и это (вся строка полностью):
    <div> EAT</div><div>BLABLA</div>
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 11 февраля 2012 г. 15:29, спустя 53 секунды

    Ivan, там .*?
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 11 февраля 2012 г. 15:36, спустя 7 минут 30 секунд

    что-то такое будет тру)
    /<div>(?:[^<]+)?(?:eat|drink)(?:[^<]+)?<\/div>/gi
    Спустя 116 сек.
    еще можно \w+ вместо ^< или \S+
  • adwo

    Сообщения: 913 Репутация: N Группа: Джедаи

    Spritz 12 февраля 2012 г. 1:10, спустя 9 часов 33 минуты 25 секунд

    ~>(.*?(?:EAT|DRINK).*?)<~

    Копирайт забыл :D

    только учти, что под твой жадный сбор (.*) вполне подойдет и это (вся строка полностью):

    От там не жадный =/

Пожалуйста, авторизуйтесь, чтобы написать комментарий!