Обработка (очищение) e-mail листа

Тема в разделе "Регулярные выражения", создана пользователем Gentle, 16 фев 2013.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. Gentle

    Gentle Постоялец

    Регистр.:
    8 окт 2007
    Сообщения:
    115
    Симпатии:
    13
    Есть файл с базой данных пользователей, нужно его импортировать в mailtux, но ему что-то не нравится. Толком, что я не понял, поэтому начал чистить от всяких странных символов.

    Привел все строки их к единому формату для импорта, но там куча того, что мне не нужно...

    Вопрос: Как обработать этот массив данных?

    Вот такого вида файлик из нескольких тысяч строк:
    HTML:
    kdddra-84@mail.ru;Катюшка;-----------
    kdddniya.semina@mail.ru;?????µ??????;???µ???????°
    bykdddva_to@mail.ru;Татьяна;Быкова
    ekdddrulina@mail.ru;Елена;Копорулина
    s_dddd80@mail.ru;Svetlana;Dani
    keee2110@mail.ru;;
    chto-to@mail.ru;ГУ;ЦКГ;;;;;ФТС;России;
    Задача удалить всё, что имеет всякие знаки припинания и заменить их какой-нть строкой типа "man".
    Заменить:
    HTML:
    kdddniya.semina@mail.ru;?????µ??????;???µ???????°
    на:
    HTML:
    kdddniya.semina@mail.ru;Имя;Фамилия
    Я пользуюсь для этого Notepad++. А регэкс пытаюсь делать в RexExBuddy

    Вот такая штука у меня получилась:
    ^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}.+[\@\_\~\$\-\*\.\)\|\(\'\!\?\<\>].*$

    Где
    ^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}
    проверка на мыло, а остальное попытка зацепить незацепляемое

    Эта штука не убирает вот такие строки
    HTML:
    chto-to@mail.ru;ГУ;ЦКГ;;;;;ФТС;России;
    keee2110@mail.ru;;
    и еще некоторые

    Решил пользовать частицу "не":
    ^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4};[^а-яА-ЯA-Za-z0-9]
    Но здесь не пойму как зацепиться за "точку с запятой", чтобы он две обрабатывал...

    Можете помочь с этим? Желательно с объяснением, где стоит знак ";" - чтобы я замену мог делать. Похоже как-то надо разделить первую группу до ; и вторую, чтобы можно было искать и заменять в два присеста. Не хочется, чтобы имя и фамилия совпадали друг с другом...
     
  2. Benjamin Coleman

    Benjamin Coleman Создатель

    Регистр.:
    14 апр 2012
    Сообщения:
    36
    Симпатии:
    42
    В textpipe есть уже готовый фильтр для email.
    [​IMG]
    Ну это если не хочется голову ломать)
     
  3. Girt

    Girt Постоялец

    Регистр.:
    11 фев 2012
    Сообщения:
    87
    Симпатии:
    62
    Если имя и фамилия стоят в определенных местах, то можно с помощью программы CSVed просто удалить ненужные столбцы.
     
  4. Gentle

    Gentle Постоялец

    Регистр.:
    8 окт 2007
    Сообщения:
    115
    Симпатии:
    13
    Мне не нужно удалять имя и фамилию, мне нужно удалить "не правильные" имя и фамилию))
    Не правильные - это знаки припинания, знаки вопросов и пробелы

    И так же строки, которые совсем не правильные типа: email@gmail.com;;;;;;

    Для это и нужна регулярка. Еще раз повторяюсь: мне не удалить второй и третий столбцы надо, а вычистить базу от лишних (кривых) строк.

    Update: Кароче я решил сделать таки, как вы предлагали)) Удалил фамилии к чертям.
    Регуляркой:
    HTML:
    ;.*[\@\~\$\*\.\)\|\(\'\"\!\?\<\>\-\,\=\•\¤].*$
    Заменил все кривые имена на ";Девушка", ибо знаю, что база женская.

    Идем методом упрощения))
     
Статус темы:
Закрыта.