Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.08.2015, 20:55   #1
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию Получение всех ссылок со страницы

Добрый день!
Мне нужно получать все ссылки со страницы.
Составил такую регулярку:

Код:
<a href=("|'')(.*?)("|'')
Ну по мимо ссылок получаю различный мусор, на примере programmersforum

Цитата:
archive/index.php
#top
member.php?find=lastposter&amp;f=26
showthread.php?do=markread&amp;mark readhash=guest
index.php?
//ad.adriver.ru/cgi-bin/click.cgi?sid=162574&bn=1&bt=36&pz= 0&rnd=605902448

и др.
Как модифицировать регулярку чтобы избавится об мусора, и получать только полные ссылки, и ссылки вида

/index.php

автоматически преобразовывать в

site.ru/index.php
nibufep вне форума Ответить с цитированием
Старый 18.08.2015, 21:29   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

<a href=("|'')(.*?)("|'').php$
Не?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.08.2015, 21:29   #3
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

В TRegExpr 0.952 есть модуль HyperLinksDecorator.pas, в нём реализован механизм разбора url на составные.
Код:
s := DecorateURLs(Text, [durlAddr, durlPath]); // www.programmersforum.ru/showthread.php?t=281565
s := DecorateURLs(Text, durlPath); // showthread.php?t=281565
ДралсяСошибками вне форума Ответить с цитированием
Старый 19.08.2015, 11:11   #4
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
<a href=("|'')(.*?)("|'').php$
Не?
так вообще не чего не получает.
nibufep вне форума Ответить с цитированием
Старый 19.08.2015, 13:02   #5
ResourceSpace
Форумчанин
 
Аватар для ResourceSpace
 
Регистрация: 30.06.2015
Сообщений: 353
Лампочка

  • Ссылки могут быть не только в <A>;
  • Ссылки могут генерироваться JavaScript'ом;
  • Вы не указали откуда берётся текст и каким механизмом (модулем) вы выполняете регулярку;
  • Одинарная кавычка не удваивается, это ошибка (если только это не экранирование для Делфи-строки);
  • У вас обычная группа, а не смотрящая назад, она будет путаться в разных кавычках;

Беря за основу это: http://www.programmersforum.ru/showp...42&postcount=6 видоизменяем до этого:
Код HTML:
/\<[aA](?:\s+[^\s]*?)*?(?:>(.*?)|\s+href=(?:([^'"\s]*?)|'(.*?)'|"(.*?)")(?:\s+[^\s]*?)*?>(.*?))<\/[aA](?:\s+[^\s]*?)*?>/g

Substitution: [URL=$2$3$4]$1$5[/URL]
Для RegExp (не поддерживающего "Группировка без обратной связи"):
Код HTML:
\<[aA](\s+[^\s]*?)*?(>(.*?)|\s+href=(([^'"\s]*?)|'(.*?)'|"(.*?)")(\s+[^\s]*?)*?>(.*?))<\/[aA](\s+[^\s]*?)*?>

Substitution: [URL=$5$6$7]$3$9[/URL]
Пробуйте.

Цитата:
Как модифицировать регулярку чтобы избавится об мусора, и получать только полные ссылки, и ссылки вида /index.php
автоматически преобразовывать в site.ru/index.php
Это уже ручками.
ResourceSpace вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение всех ссылок на видео с сайта Tyoma5891 PHP 5 10.10.2013 13:45
Поиск всех внешних ссылок с сайта asale PHP 2 24.04.2012 22:56
Получение ссылок от родительского компонента на все визуальные дочерние victorixx Компоненты Delphi 2 21.11.2011 09:13
получение списка ссылок на подпапки файлы однойпапки i777 Microsoft Office Excel 3 06.10.2010 23:30
Изменение всех ссылок в XLS. KOM-STAR Microsoft Office Excel 2 13.05.2010 15:50