- Помогите плиз с регексами, gr, 02:40 , 22-Янв-06 (1)
>Всем привет >Помогите плиз с регексами: >Есть строка вида >[user@mail.ru]-[0.85589599609375]-[1830319.21337891].dat >(все что идет после "[почта]-" может быть различным, например может быть различное >кол-во следующих за ним рандомных цифр > >Нужен регекс который бы однозначно выдирал только электронный адрес, и ничего более... > >Такая конструкция: > > if($file_name =~ /.*\[(.*\@.*\.\w+){1}\]-.*/i) { > $email = $1; > print "$email\n"; > } > >Почему то не хочет адекватно работать >Хелп плиз, надо срочно :( /^\[\w+\@\w+\.\w+\]/ так точнее .* - очень жадный, у тебя в первом же .* сьедается вся строка. Помни про .*? - это минимальное совпадение.
- Помогите плиз с регексами, gr, 02:41 , 22-Янв-06 (2)
>>Всем привет >>Помогите плиз с регексами: >>Есть строка вида >>[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
- Помогите плиз с регексами, mthawk, 12:06 , 26-Янв-06 (3)
>>/^\[\w+\@\w+\.\w+\]/ >> >>так точнее >> >>.* - очень жадный, у тебя в первом же .* сьедается вся >>строка. Помни про .*? - это минимальное совпадение. > > >/^\[(\w+\@\w+\.\w+)\]/ > >ой, скобочки забыл для $1 Увы, согласно спецификации \w - выбирает букву или цифру или символ подчеркивания. Если в e-mail есть точка - он этого не учтет. а доменную часть я бы тоже модифицировал, для универсальности. посему имеем:
/^\[((\w|\.)+\@(\w|\.)+)\]/
- Помогите плиз с регексами, Onix, 14:47 , 26-Янв-06 (4)
>>>/^\[\w+\@\w+\.\w+\]/ >>> >>>так точнее >>> >>>.* - очень жадный, у тебя в первом же .* сьедается вся >>>строка. Помни про .*? - это минимальное совпадение. >> >> >>/^\[(\w+\@\w+\.\w+)\]/ >> >>ой, скобочки забыл для $1 > > >Увы, согласно спецификации \w - выбирает букву или цифру или символ подчеркивания. >Если в e-mail есть точка - он этого не учтет. >а доменную часть я бы тоже модифицировал, для универсальности. >посему имеем: > >/^\[((\w|\.)+\@(\w|\.)+)\]/ Я решил не искать легких путей :) /([\w+\-\.]+\@[\w\-\.]+\.\w{2,3})(.*)/
- Помогите плиз с регексами, chip, 17:45 , 26-Янв-06 (5)
>Увы, согласно спецификации \w - выбирает букву или цифру или символ подчеркивания. >Если в e-mail есть точка - он этого не учтет.Согласно RFC e-mail не может содержать точек в __имени пользователя__. >а доменную часть я бы тоже модифицировал, для универсальности. >посему имеем: > >/^\[((\w|\.)+\@(\w|\.)+)\]/
|