The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Помогите плиз с регексами"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Помогите плиз с регексами"  
Сообщение от Dr. Nebula email on 21-Янв-06, 15:29 
Всем привет
Помогите плиз с регексами:
Есть строка вида
[user@mail.ru]-[0.85589599609375]-[1830319.21337891].dat
(все что идет после "[почта]-" может быть различным, например может быть различное кол-во следующих за ним рандомных цифр

Нужен регекс который бы однозначно выдирал только электронный адрес, и ничего более...
Такая конструкция:

if($file_name =~ /.*\[(.*\@.*\.\w+){1}\]-.*/i) {
$email = $1;
print "$email\n";
}

Почему то не хочет адекватно работать
Хелп плиз, надо срочно :(

Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Помогите плиз с регексами"  
Сообщение от gr on 22-Янв-06, 02:40 
>Всем привет
>Помогите плиз с регексами:
>Есть строка вида
>[user@mail.ru]-[0.85589599609375]-[1830319.21337891].dat
>(все что идет после "[почта]-" может быть различным, например может быть различное
>кол-во следующих за ним рандомных цифр
>
>Нужен регекс который бы однозначно выдирал только электронный адрес, и ничего более...
>
>Такая конструкция:
>
> if($file_name =~ /.*\[(.*\@.*\.\w+){1}\]-.*/i) {
>  $email = $1;
>  print "$email\n";
> }
>
>Почему то не хочет адекватно работать
>Хелп плиз, надо срочно :(

/^\[\w+\@\w+\.\w+\]/

так точнее

.* - очень жадный, у тебя в первом же .* сьедается вся строка. Помни про .*?  - это минимальное совпадение.

Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Помогите плиз с регексами"  
Сообщение от gr on 22-Янв-06, 02:41 
>>Всем привет
>>Помогите плиз с регексами:
>>Есть строка вида
>>[user@mail.ru]-[0.85589599609375]-[1830319.21337891].dat
>>(все что идет после "[почта]-" может быть различным, например может быть различное
>>кол-во следующих за ним рандомных цифр
>>
>>Нужен регекс который бы однозначно выдирал только электронный адрес, и ничего более...
>>
>>Такая конструкция:
>>
>> if($file_name =~ /.*\[(.*\@.*\.\w+){1}\]-.*/i) {
>>  $email = $1;
>>  print "$email\n";
>> }
>>
>>Почему то не хочет адекватно работать
>>Хелп плиз, надо срочно :(
>
>/^\[\w+\@\w+\.\w+\]/
>
>так точнее
>
>.* - очень жадный, у тебя в первом же .* сьедается вся
>строка. Помни про .*?  - это минимальное совпадение.


/^\[(\w+\@\w+\.\w+)\]/

ой, скобочки забыл для $1

Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Помогите плиз с регексами"  
Сообщение от mthawk email(ok) on 26-Янв-06, 12:06 
>>/^\[\w+\@\w+\.\w+\]/
>>
>>так точнее
>>
>>.* - очень жадный, у тебя в первом же .* сьедается вся
>>строка. Помни про .*?  - это минимальное совпадение.
>
>
>/^\[(\w+\@\w+\.\w+)\]/
>
>ой, скобочки забыл для $1


Увы, согласно спецификации \w - выбирает букву или цифру или символ подчеркивания. Если в e-mail есть точка - он этого не учтет.
а доменную часть я бы тоже модифицировал, для универсальности.
посему имеем:

/^\[((\w|\.)+\@(\w|\.)+)\]/

Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Помогите плиз с регексами"  
Сообщение от Onix email(??) on 26-Янв-06, 14:47 
>>>/^\[\w+\@\w+\.\w+\]/
>>>
>>>так точнее
>>>
>>>.* - очень жадный, у тебя в первом же .* сьедается вся
>>>строка. Помни про .*?  - это минимальное совпадение.
>>
>>
>>/^\[(\w+\@\w+\.\w+)\]/
>>
>>ой, скобочки забыл для $1
>
>
>Увы, согласно спецификации \w - выбирает букву или цифру или символ подчеркивания.
>Если в e-mail есть точка - он этого не учтет.
>а доменную часть я бы тоже модифицировал, для универсальности.
>посему имеем:
>
>/^\[((\w|\.)+\@(\w|\.)+)\]/

Я решил не искать легких путей :)

/([\w+\-\.]+\@[\w\-\.]+\.\w{2,3})(.*)/

Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Помогите плиз с регексами"  
Сообщение от chip email(ok) on 26-Янв-06, 17:45 
>Увы, согласно спецификации \w - выбирает букву или цифру или символ подчеркивания.
>Если в e-mail есть точка - он этого не учтет.

Согласно RFC e-mail не может содержать точек в __имени пользователя__.

>а доменную часть я бы тоже модифицировал, для универсальности.
>посему имеем:
>
>/^\[((\w|\.)+\@(\w|\.)+)\]/

Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру