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

Тема в разделе "Регулярные выражения", создана пользователем 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
    Сообщения:
    157
    Симпатии:
    25
    $shablon='/(?<=class="dt"><a href=\").*(?=">.*)/';
     
    slidergod нравится это.
  3. bertolai

    bertolai

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

    Sanuch

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

    bertolai

    Регистр.:
    21 янв 2008
    Сообщения:
    158
    Симпатии:
    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
    Сообщения:
    158
    Симпатии:
    56
    Получилось, благодарю.
    Еще вопрос есть.
    Находятся таким образом ссылки, но их бывает несколько одинаковых
    То есть допустим
    Перейти по ссылке
    Перейти по ссылке
    Перейти по ссылке
    Перейти по ссылке
    Перейти по ссылке

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

    nittis Постоялец

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

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

    Vice Писатель

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

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
Статус темы:
Закрыта.