Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Регулярное выражение,


Автор: Pavelbej 25.12.2008, 16:11
Здравствуйте!

Есть составленное регулярное выражение для нахождения в HTML пути к favicon.ico. Но оказалось что у многих сайтов, нужная мне строка, разная.

Текущее регулярное выражение:
Код

(?i)<link rel="shortcut icon" (href)=(")(.+?)(\2)(.*?)>


Немного иследовав пару сайтов пришел к выводу что нужно:

когда в "rel=" может быть и "shortcut icon" и просто "icon":
Код

<link rel="SHORTCUT ICON" href="/favicon.ico" />

<link rel="icon" href="http://www.avangate.com/favicon.ico" type="image/x-icon"/>


когда "rel=" и "href=" могут быть перемещены местами:
Код

<link href="favicon.ico" rel="shortcut icon">


А также когда между ними находится лишний, для меня текст:
Код

<link rel="shortcut icon" type="image/ico" href="/images/favicon.ico" />



А также не реагировать если иконка не ".ico":
Код

<link rel="shortcut icon" type="image/ico" href="/images/favicon.gif" />


И на последок, если иконка не называется "favicon.ico":
Код

<link rel="shortcut icon" href="/images/plimus_wave.ico" />


Такое возможно? Я не до конца еще разобрался с регулярными выражениями.

Автор: Romikgy 25.12.2008, 17:18
<link.+(href)=(")(.+?\.[A-Za-z]{3})(")(.*?)>

Автор: Pavelbej 26.12.2008, 11:28
Romikgy, твой пример захватывает все строки где встречается LINK и HREF. Мне же, например из данной строки:
Код

<link rel="SHORTCUT ICON" href="/favicon.ico" />


нужно получить параметром вот это:
Код

/favicon.ico

Автор: Romikgy 26.12.2008, 11:53
<link.+?href="(.+?\.[A-Za-z]{3})".*?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)