LINUX.ORG.RU

Регулярное выражение для анализа соответствия строки списку email-адресов разделённых запятыми


0

0

Не получается реализовать SUBJ
Пробую так :
....
....
if ( ! ($params{$_} =~ /((\w+)\@(\w+)){1}(\,((\w+)\@(\w+))+)*/) )
    {
       die "Error : parameter \"$_\" is not CSV string\n";
    }
....
....
Не работает!?
Мои предположения по поводу этого выражения :
((\w+)\@(\w+)){1}   -  Это ровно одно совпадение типа user@domain
(\,((\w+)\@(\w+)){1})*  - Это ноль или более совпадений вида ,user@domain

В чём моя ошибка?
И ещё - где можно посмотреть примеры наиболее часто употребляемых
регулярных выражений? 
Имеется ввиду не синтаксис, а готовые шаблоны например для email,ip...

Ответ на: комментарий от kri

в регекспе есть ключ m//g, который говорит, что надо найти все, пока не кончится. Т.е. по типу как колбасу режешь, по циклу while.

короче чето в этом роде:

#!/usr/bin/perl -w

use LWP::Simple;

my $urlpage='http://my.cool/emails.html';
print join "\n" => grep{s/,?([\w+\-\.]+\@[\w\-\.]+\.[\w\-\.]?\.?\w{2,6}),?/$1/ig} split /\n/, get "$urlpage";

про примеры, вот тут глянь, мож че подойдет:

http://genphys.phys.msu.ru/~dmitriyk/perl/regex.shtml

vilfred ☆☆
()
Ответ на: комментарий от aton

2 aton:
email адреса вообще видели или как? Про точку в адресе почтового сервера слышали? А в названии почтового ящика?
вот этот адрес ваше рег. выражение забракует.
my.mail@server.ru


Еще раз: идите на cpan.org

anonymous
()

1 сновная проблема: @ входит в \w
это значит, что как мимимум надо использовать ?
2 Частая ошибка: пытаться использовать хеденшолпер - два в одном.
Проще все-таки разбить строку на куски и работать с отдельными кусками

if ( @err = grep{!/^\w+@\w+$/} split(/\s*,\s*/,$input) ){
die "bad email(s): ",join(',',@err),"\n";
}

anonymous
()
Ответ на: комментарий от anonymous

рекомендую
Дж.Фридл "Регулярные выражения. Библиотека программиста"
J.E.F.Friedl "Mastering Regular Expressions"

anonymous
()
Ответ на: комментарий от anonymous


ggg :)

Перца интересовали совпадения в строках вида: user@domain, так что
твои замечания неуместны




aton
()
Ответ на: комментарий от anonymous

> 1 сновная проблема: @ входит в \w

Ошибаешся :) Не входит, вот пример:


#perl -e 'print "zhopa\n" unless $ARGV[0] =~ m/^\w+$/;' lalala
#

---

#perl -e 'print "zhopa\n" unless $ARGV[0] =~ m/^\w+$/;' lal@ala
#zhopa

aton
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.