регулярное выражение

Тема в разделе "PHP", создана пользователем sympler, 8 фев 2010.

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

    sympler Постоялец

    Регистр.:
    24 окт 2008
    Сообщения:
    131
    Симпатии:
    6
    помогите с регуляркой, второй день парюсь (((
    в общем есть текст:
    естесвенно между ними может быть куча другого текста (пометил как левый текст 1 и левый текст 2,
    но смысл таков: сначала идет строка "abccc" потом знак ; или знак &
    потом мне нужный текст а в конце опять знак ; или знак &
    с этим я справился, но не могу никак исключить "нужный текст" который начинается с таких слов "начало", "поехали" и\или заканчивается на слова "конец", "надоело".
    нужный текст: от 3 до 200 знаков. (если это условие ускорит выборку нужного текста)
    то есть выборку сделал (отсеял левый текст), а вот отсеять 6, 9 и 10 строки никак не получается,
    поиск по тексту без учета регистра
    специально не буду приводить то что у меня чтобы не напутали
    скажу что использовал preg_match_all () для занесения всех совпадений в массив
    preg_match_all($regul, $text, $matches);
    заранее спасибо, если нужно более подробно то распишу
     
  2. tulvit

    tulvit Создатель

    Регистр.:
    26 янв 2010
    Сообщения:
    30
    Симпатии:
    5
    Как вариант почистить полученный регуляркой массив. Вот на вскидку
    PHP:
    $good = array(); //сюда будем записывать только нужное нам из $matches
    foreach($matches as $key => $value) {
        foreach(
    $value as $matches) {
            
    $matches preg_replace("#(^начало|^поехали).*|.*(конец$|надоело$)#i""bad"$matches);    
            if(
    $matches!="bad"){
                
    $good[] = $matches;
            }
        }
    }
     
  3. sympler

    sympler Постоялец

    Регистр.:
    24 окт 2008
    Сообщения:
    131
    Симпатии:
    6
    спасибо хотябы на этом, хотя думал что обойдусь одним регулярным выражением,

    появился вопрос как исключить повторяющиеся зачения массива? потомучто те что приведены на этом форуме не работают

    логика такая нужно взять первый элемент массива и сравнить со всеми остальными, если есть похожие то его удалить, и так далее
    осталось только реализовать
     
  4. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
  5. betatest

    betatest

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

    Alix

    Регистр.:
    27 янв 2008
    Сообщения:
    234
    Симпатии:
    84
    ТС, а что если так попробовать:

    PHP:
    /abccc(&|;)(?!нАчаЛО|поехали)(.*?)(?<!КоНеЦ|надоЕло)(&|;)/i
     
  7. sympler

    sympler Постоялец

    Регистр.:
    24 окт 2008
    Сообщения:
    131
    Симпатии:
    6
    пробовал, но тогда не совсем понимал как ее использовать, теперь пришлось разобраться и получилось ))

    было полезно, как уже писал, раньше пытался но не получалось, сейчас вышло, поскольку раньше применял не правильно
    попробовал, но чего-то не хватает, поскольку регулярка исключает все (( то есть ни одного совпадения, попробуйте сами, хотя от моего выражения немного отличается
     
Статус темы:
Закрыта.