Помогите с регуляркой плз.

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

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

    slidergod Постоялец

    Регистр.:
    29 июл 2006
    Сообщения:
    53
    Симпатии:
    5
    Есть .html страница, с такими кусками кода:

    <dt class="dt"><a href="/subdomain.ru/"><i class="ava45"

    Каким регулярным выражением можно получить отмеченное стронгом? Всю голову сломал :(
     
  2. funman

    funman Постоялец

    Регистр.:
    28 дек 2007
    Сообщения:
    146
    Симпатии:
    25
    $shablon='/(?<=class="dt"><a href=\").*(?=">.*)/';
     
    slidergod нравится это.
  3. bertolai

    bertolai

    Регистр.:
    21 янв 2008
    Сообщения:
    157
    Симпатии:
    56
    Всем привет.
    есть у меня уже работающая регулярка
    (http:\/\/pampararam.pararam.pam\/[\w\-\.]+\/[\w\-\.]+\/)[^\w\-\.]
    она вытаскивает урлы такого вида:
    http://pampararam.pararam.pam/porkops/sredce
    http://pampararam.pararam.pam/berniop/kamildf
    и т.д.
    помогите составить похожую регулярку...
    нужно отобрать все ссылки вида
    http://pamparam.pam.ru/user/?uid=555555
    http://pamparam.pam.ru/user/?uid=3980134
    и т.д.
    где меняются только последние значение, это цифры, то есть 555555, а начало (http://pamparam.pam.ru/user/?uid=)всегда одинаковое
     
  4. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    PHP:
    $reg '/(http:\/\/pamparam\.pam\.ru\/user\/\?uid=\d+)/i';
     
  5. bertolai

    bertolai

    Регистр.:
    21 янв 2008
    Сообщения:
    157
    Симпатии:
    56
    это видимо для php сделанно?
    к сожаленью я настолько в php не силен.
    мне нужен простой вид, как например в в той регулярке которую я привел для примера.
    но рискну предположить что это можно записать так?:
    /(http:\/\/pamparam\.pam\.ru\/user\/\?uid=\d+)/i
     
  6. nittis

    nittis Постоялец

    Регистр.:
    21 апр 2009
    Сообщения:
    68
    Симпатии:
    29
    вполне достаточно оставить

    (http:\/\/pamparam\.pam\.ru\/user\/\?uid=\d+)

    / в начале и в конце служат границами строки и Вам скорее всего не понадобятся

    спецификатор i отключает зависимость регулярки от регистра символов и не нужен если регистр точно известен

    если не сработает, то можно попробовать вот так

    (http:\/\/pamparam\.pam\.ru\/user\/\?uid=\d+)\D
     
    bertolai нравится это.
  7. bertolai

    bertolai

    Регистр.:
    21 янв 2008
    Сообщения:
    157
    Симпатии:
    56
    Получилось, благодарю.
    Еще вопрос есть.
    Находятся таким образом ссылки, но их бывает несколько одинаковых
    То есть допустим
    http://pamparam.pam.ru/user/?uid=555555
    http://pamparam.pam.ru/user/?uid=3980134
    http://pamparam.pam.ru/user/?uid=00000000004
    http://pamparam.pam.ru/user/?uid=00000000004
    http://pamparam.pam.ru/user/?uid=73635

    хотелось бы избавиться от дублей
    Я конечно понимаю что лечге всего в самом скрипте который принимает данные поставить удаление дублей...
    но все таки, а есть ли такая возможность в самой регулярке это сделать?
    То есть она находит удовлетворяющий условиям текст, а следующий точно такой же - нет.
     
  8. nittis

    nittis Постоялец

    Регистр.:
    21 апр 2009
    Сообщения:
    68
    Симпатии:
    29
    я не берусь утвеждать, что нет такого языка (функции), который позволяет сразу отсеить дубли, при использовании регулярных выражений, но это несколько противоречит их сути. это-же просто поиск подстроки с хитрыми условиями и не более того.

    потому придется решать этот вопрос в рамках скрипта
     
  9. Vice

    Vice Писатель

    Регистр.:
    6 июн 2009
    Сообщения:
    9
    Симпатии:
    3
    bertolai, а на одной странице много ссылок одинаковых? А то можно было бы использовать модификатор жадности U - тогда искалась бы только первая попавшаяся ссылка и дублей точно не было бы
     
    bertolai нравится это.
  10. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    Гораздо проще очистить массив от дублей используя функцию array_unique
     
Статус темы:
Закрыта.