Forum Webscript.Ru

Программирование => Perl => Тема начата: Frodo[mW] от 19 Апреля 2003, 20:13:33

Название: Регулярка
Отправлено: Frodo[mW] от 19 Апреля 2003, 20:13:33
Ну не любят они меня :)

есть адреса типа

mail.com
127.0.0.1
http://www.mail.com
http://www.mail.com/
http://mail.com

в итоге нужно получить только mail.com. убрать и слеши и хттп и ввв, а если идет только ип, то его не трогать, а оставить в таком же состоянии :)
Название: Регулярка
Отправлено: Frodo[mW] от 19 Апреля 2003, 21:24:44
уже не надо :)
$host[$i]=~s/^(http:\\/\\/www\\.|http:\\/\\/|www\\.)(.*)/$2/;
Название: Регулярка
Отправлено: Alone от 19 Апреля 2003, 21:38:36
Хотя возможно так былобы получше
(^http://www\\.|^http://|^www\\.|^)([^/]*)(/|$)

попробуй прогнать mail.com/ind.html?asd
или http://
Название: Регулярка
Отправлено: scalar от 19 Апреля 2003, 21:48:46
@array=qw(
mail.com
127.0.0.1
http://www.mail.com
http://www.mail.com/
http://mail.com);

foreach(@array)
{
   s#^(?:http://)?(?:www\\.)?##;
   s#/$##;
}

print "@array";
Название: Регулярка
Отправлено: scalar от 19 Апреля 2003, 21:55:55
OR

foreach(@array)
{
   s#^(?:http://)?(?:www\\.)?##;
   s#/.*$##;
}
Название: Регулярка
Отправлено: Frodo[mW] от 19 Апреля 2003, 22:14:47
Всем пасиб :)
Название: Регулярка
Отправлено: scalar от 19 Апреля 2003, 22:30:09
Нет вот ещё быстрое решение для массивов И всё :)

   my @array=qw(
mail.com
127.0.0.1
http://www.mail.com
http://www.mail.com/index.html?ttt
http://mail.com);

@array=map{m#^(?:http://)?(?:www\\.)?([^/]*)#}@array;
print "@array";