The OpenNET Project / Index page

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




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

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

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

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

  • Помогите плиз с регексами, !*! 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|\.)+)\]/




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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