Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск ip адреса в тексие, регулярные выражения 
:(
    Опции темы
seventy
Дата 24.9.2006, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Имеется текст содержащий некоторое количество ип адресов, как при помощи рег выражений все эти адреса достать? 
PM MAIL   Вверх
nitr
Дата 24.9.2006, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



=) самое простое
Код

#!perl
my $str = '1.2.3.4 ggg 1.2.3.4 hghg 5.6.7.8 ghg';
my $hash;
$hash->{$1} ++ while $str =~ /(\d+\.\d+\.\d+\.\d+)/smg;
#либо вывести
print join "\n", sort keys %$hash; 

#либо, конечно, можно в массив 
my @ip_list= sort keys %$hash;



--------------------
PM   Вверх
DiverD
Дата 25.9.2006, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Это проще =))

Код

#!/usr/bin/perl
$a = 'Hello my subnet, my adress is 192.157.3.4 ellite adress';
$a =~ /(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})/g;
print $1;

--------------------
[ FreeBSD & pERL p0WER eVERY dAY ]
PM MAIL   Вверх
Danissimo
Дата 25.9.2006, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



а так:
/(\d{1,3}(?:\.\d{1,3}){3})/g
PM MAIL   Вверх
nitr
Дата 25.9.2006, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



Danissimo, так дольше! и ресурсов больше и НЕЧИТАБЕЛЬНО, можешь сам проверить, по каким причинам, я не выяснял, поэтому и не юзаю, ты бы такое указал


--------------------
PM   Вверх
amg
Дата 25.9.2006, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 38
Всего: 50



А можно еще извратиться и дополнить проверкой на правильность (см. код nitr)
Код

$hash->{$1} ++ while $str =~ /(\d+\.\d+\.\d+\.\d+)/smg xor grep {$_>255} split /\./,$1;

PM MAIL   Вверх
DiverD
Дата 25.9.2006, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А еще вот так:

Код

#!/usr/bin/perl
$a = 'Hello my subnet, my adress is 192.157.3.4 ellite adress';
$b = '\d{1,3}.' x 4;
$a =~ /($b)/go;
print $1;


=))
--------------------
[ FreeBSD & pERL p0WER eVERY dAY ]
PM MAIL   Вверх
Danissimo
Дата 25.9.2006, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



nitr, чесно говоря не понял, задаешь ли ты вопрос. Если да, то я его не понял.

Я рассуждаю так: регулярные языки -- такие языки, которые могут быть распознаны конечным автоматом. Главное -- по регулярному выражению построить автомат. По регулярному выражению строится простейший автомат, более того, он линейный. Так что не вижу проблем.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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