Forum Webscript.Ru
Программирование => Perl => Тема начата: от 18 Июля 2002, 11:22:32
-
Помогите пожалуйста :)
Нужно регулярное выражение для выдирания сервернэймов(somehost.ru)
из HTML документов, только из тегов
-
|
-
$html=~|
-
Предлагаю универсальный вариант:
Допустим, URL содержится в переменной $a
$a =~ tr/A-ZА-Я/a-zа-я/;
$a =~ s/href=[\\"|\\\']?((http)|(ftp)):\\/\\/.+[\\"|\\\']?\\s/href=# /g;
-
знак вопроса пропустили...
-
А в поиск заглянуть? Этот вопрос поднимался много раз.
ЗЫ. $a =~ tr/A-ZА-Я/a-zа-я/; А где это такие URL а-я?
-
В перспективе... ;)
-
Для NeoNox: эта строчка не нужна. Собственно имя сервера, как видите, задано шаблоном .+ Просто когда я этот алгоритм сочинял, в первых версиях был другой шаблон, и я подумал, что русские буквы тоже надо предусмотреть, потому что если в URL ошибочно попадет русская буква (а такое бывает), то вся эта лабуда работать не будет.
-
Такой вариант:
$a =~ s/href=\\n*[\\"|\\\']?\\n*((http)|(ftp)):\\/\\/.+\\n*[\\"|\\\']?\\n*\\s/href=# /g;
Здесь предусмотрено наличие переносов строки внутри тэга ссылки. Некоторые HTML-редакторы (e.g., MS FrontPage) любят пихать эти преносы где надо и где не надо.
-
Вроде бы начинали говорить о выдирании доменных имен, а не полных URL... Я сознательно отбросил даже номер порта (см. выше).
Unregistered
Зачем лишние скобки вокруг "http" и "ftp"?