Forum Webscript.Ru

Программирование => Perl => Тема начата: от 18 Июля 2002, 11:22:32

Название: Регулярное выражение ???
Отправлено: от 18 Июля 2002, 11:22:32
Помогите пожалуйста :)
Нужно регулярное выражение для выдирания сервернэймов(somehost.ru)
из HTML документов, только из тегов
Название: Регулярное выражение ???
Отправлено: Haze от 18 Июля 2002, 12:12:56
|
Название: Регулярное выражение ???
Отправлено: YA от 18 Июля 2002, 14:22:05
$html=~|
Название: Регулярное выражение ???
Отправлено: Unregistered от 14 Августа 2002, 14:01:44
Предлагаю универсальный вариант:
Допустим, URL содержится в переменной $a

$a =~ tr/A-ZА-Я/a-zа-я/;
$a =~ s/href=[\\"|\\\']?((http)|(ftp)):\\/\\/.+[\\"|\\\']?\\s/href=# /g;
Название: Регулярное выражение ???
Отправлено: Haze от 14 Августа 2002, 16:58:37
знак вопроса пропустили...
Название: Регулярное выражение ???
Отправлено: NeoNox от 15 Августа 2002, 00:33:20
А в поиск заглянуть? Этот вопрос поднимался много раз.

ЗЫ. $a =~ tr/A-ZА-Я/a-zа-я/; А где это такие URL а-я?
Название: Регулярное выражение ???
Отправлено: Serchey от 15 Августа 2002, 10:55:14
В перспективе... ;)
Название: Регулярное выражение ???
Отправлено: Unregistered от 15 Августа 2002, 15:32:57
Для NeoNox: эта строчка не нужна. Собственно имя сервера, как видите, задано шаблоном .+ Просто когда я этот алгоритм сочинял, в первых версиях был другой шаблон, и я подумал, что русские буквы тоже надо предусмотреть, потому что если в URL ошибочно попадет русская буква (а такое бывает), то вся эта лабуда работать не будет.
Название: Регулярное выражение ???
Отправлено: Unregistered от 15 Августа 2002, 16:54:05
Такой вариант:

$a =~ s/href=\\n*[\\"|\\\']?\\n*((http)|(ftp)):\\/\\/.+\\n*[\\"|\\\']?\\n*\\s/href=# /g;

Здесь предусмотрено наличие переносов строки внутри тэга ссылки. Некоторые HTML-редакторы (e.g., MS FrontPage) любят пихать эти преносы где надо и где не надо.
Название: Регулярное выражение ???
Отправлено: YA от 17 Августа 2002, 00:03:20
Вроде бы начинали говорить о выдирании доменных имен, а не полных URL... Я сознательно отбросил даже номер порта (см. выше).

Unregistered
Зачем лишние скобки вокруг "http" и "ftp"?