Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> RegExpr определить URL в cтроке 
V
    Опции темы
1Andrey1
Дата 20.4.2008, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 8.9.2007

Репутация: 1
Всего: 4



Ну, в общем, задача такая: есть строка в которой может быть интернет ссылка, а может и не быть. может быть ссылка и какойнибудь текст. Так вот как бы при помощи RegExpr определить строки в которых есть только одна ссылка? то есть если в строке кроме ссылки какой нибудь текст она не нужна и если ссылок несколько они тоже не нужны.
PM MAIL ICQ   Вверх
MetalFan
Дата 20.4.2008, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



приведи конкретные примеры строк


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
1Andrey1
Дата 20.4.2008, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 8.9.2007

Репутация: 1
Всего: 4



Конкретных примеров не приведу... вот почему. Я делаю программу которая сортирует музыку на основе тегов. В общем расписывать долго, если комуто интересно, то вот тема на форуме о моей программе. А строки о которых я спрашивал - это теги песен, просто часто всякие несознательные товарищи заполняют их ссылками(ну там на свой сайт например) естественно на весь альбом эти теги-ссылки получаются одинаковые и программа их обрабатывает не совсем правильно. Вот поэтому и хотелось бы как нибудь их обнаруживать. А почему только если одна ссылка? Потому что так же часто бывают теги в виде "D.I.P project - где ты[www.mp3-online.com.ua]"
PM MAIL ICQ   Вверх
source777
Дата 20.4.2008, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 4
Всего: 56



21Andrey1 Лови мой вариант:
^(https?://)?([a-z0-9-]+[a-z0-9]\.)*[a-z]{2,6}(:[0-9]+)?(/[_a-z0-9.%]*)*(\?(&?[a-z0-9%]+=[a-z0-9%]*)*)?(#[a-z]+)?$

P.S. Он подходит для широкого класса URL, в том числе и с get-параметрами и якорями, при желании можно урезать этот диапазон...



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
1Andrey1
Дата 20.4.2008, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 8.9.2007

Репутация: 1
Всего: 4



source777, спасибо конечно, но это не совсем то что я хотел. Я так понял твое выражение ищет ссылки вида "http:\\........", а мне бы "www. ....." и самое главное как определить что ничего кроме ссылки нет?
PM MAIL ICQ   Вверх
source777
Дата 20.4.2008, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 4
Всего: 56



Цитата(1Andrey1 @  20.4.2008,  17:15 Найти цитируемый пост)
Я так понял твое выражение ищет ссылки вида "http:\\........", а мне бы "www. ....." и самое главное как определить что ничего кроме ссылки нет? 
Нет, ты не правильно понял. Это выражение подойдёт для любого URL и для "www. ....." в том числе, приэтом оно требует, чтобы кроме URL в строке ничего не было!!!



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
1Andrey1
Дата 20.4.2008, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 8.9.2007

Репутация: 1
Всего: 4



чтото не пойму как его применить? что я делаю не так?

Код


const
  URL = ' ^(https?://)?([a-z0-9-]+[a-z0-9]\.)*[a-z]{2,6}(:[0-9]+)?(/[_a-z0-9.%]*)*(\?(&?[a-z0-9%]+=[a-z0-9%]*)*)?(#[a-z]+)?$';

......................................

RegExpr.Expression := URL;
if RegExpr.Exec (tag.artist)then
if RegExpr.Match [0]<>'' then
        begin
          showmessage('найден URL:'+#13+tag.artist+' - '+tag.title);
          result:=RegExpr.Match [0];
          exit;
        end;




PM MAIL ICQ   Вверх
source777
Дата 20.4.2008, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 4
Всего: 56



А с какого перепугу ты пробел в начало регулярки добавил? ведь это коренным образом извращает весь её смысл...


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
1Andrey1
Дата 20.4.2008, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 8.9.2007

Репутация: 1
Всего: 4



блин, точно smile наверное так скопировал... 
source777, спасибо большое все работает как надо
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0723 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.