голосование
BASH
PHP
Javascript
HTML
Программы
PostgreSQL
Firebird
Хостинг
Майнинг
Железо
Заработок на сайте
Docker
Ресурсы
GIT
SEO
Oracle
Python
Мобильные технологии
Ремонт
Mercurial
Проголосуйте за категорию!
счётчик
Яндекс.Метрика

Как проверить email-адрес регулярные выражения Python

Валидация данных в python - это важное дело. Если не будет валидации, то придётся писать массу скриптов, которые будут исправлять данные. Очень часто приходится руками менять неверные данные. Если еmail-адрес с ошибкой, то вы не сможете послать на него письмо. Тут ошибок не должно быть!

Нам поможет модуль re с регулярными выражениями. Подробнее о модуле re написано в статье поиск значений регулярные выражения Python. Он довольно гибкий. Мы будем проверять email при помощи регулярных выражений.


#!/usr/bin/python3
from re import *

def get_address():
    '''
    проверка email по шаблону    
    '''
    pattern = compile('(^|\s)[-a-z0-9_.]+@([-a-z0-9]+\.)+[a-z]{2,6}(\s|$)')
    address = input('inter you email address:')
    is_valid = pattern.match(address)
    if is_valid:
        print('правильный email:', is_valid.group())
        # объект is_valid содержит 3 метода
        print('методы: start:', is_valid.start(), 'end:',\
        is_valid.end(), 'group:', is_valid.group())
    else:
        print('неверный email! введите email...\n')


get_address()
'''
ввел правильный email ya@yandex.ru
вывод:
inter you email address:ya@yandex.ru
правильный email: ya@yandex.ru
методы: start: 0 end: 12 group: ya@yandex.ru

ввел неправильный email ya.ya.ru
вывод:
inter you email address:ya.ya.ru
неверный email! введите email...
'''

Как работает эта функция? Вам нужно запустить скрипт. Потом консоль попросит ввести email. Введите правильный email-адрес. Посмотрите на результат. Затем введите неправильный email.

  1. compile - метод для создания объект шаблона
  2. match - метод ищет совпадение по заданному шаблону. Поиск ведётся с начала строки
  3. search - возвращает одну найденную строку
  4. findall - метод возвращает список всех найденных совпадений
  5. sub - метод ищет шаблон в строке и заменяет его на указанную подстроку. Идеально подходит для замены неприличных слов в сообщений.
  6. group - метод выводит результат
  7. start - номер начальной позиции поиска
  8. end - номер последней позиции поиска

Небольшая шпаргалка по символам для шаблона.

СимволОписание
.Один любой символ, кроме новой строки \n.
?0 или 1 вхождение шаблона слева
+1 и более вхождений шаблона слева
*0 и более вхождений шаблона слева
\wЛюбая цифра или буква (\W — все, кроме буквы или цифры)
\dЛюбая цифра [0-9] (\D — все, кроме цифры)
\sЛюбой пробельный символ (\S — любой непробельный символ)
\bГраница слова
[..]Один из символов в скобках ([^..] — любой символ, кроме тех, что в скобках)
\Экранирование специальных символов (\. означает точку или \+ — знак «плюс»)
^ и $Начало и конец строки соответственно
{n,m}От n до m вхождений ({,m} — от 0 до m)
a|bСоответствует a или b
()Группирует выражение и возвращает найденный текст
\t, \n, \rСимвол табуляции, новой строки и возврата каретки соответственно

Посмотрите на примеры.


#!/usr/bin/python3
import re

# поиск одного email
str='письма на почту r.e.egor@yandex.domen1.domen2.ru ношу словно я роман\
 с продолженьем пишу'
match = re.search(r'[\w.-]+@[\w.-]+\.?[\w]+?', str)
print(match.group())
'''
вывод:
r.e.egor@yandex.domen1.domen2.ru
'''

print('-'*30)

# поиск нескольких email
str2='письма на почту egor@yandex.ru ношу словно anton@g.mail.ru словно я роман\
 с продолженьем пишу'
mail = re.findall(r'[\w.-]+@[\w.-]+\.?[\w]+?', str2)
print(mail)
'''
вывод:
['egor@yandex.ru', 'anton@g.mail.ru']

'''

print('-'*30)

# результаты выводятся в кортежах
str3='письма на почту egor@yandex.ru ношу словно anton@g.mail.ru словно я роман\
 с продолженьем пишу'
mail = re.findall(r'([\w.-]+)@([\w.-]+\.?[\w]+?)', str3)
print(mail)
'''
вывод:
[('egor', 'yandex.ru'), ('anton', 'g.mail.ru')]
'''

print('-'*30)

# массовая замена  
str4='письма на почту egor@yandex.ru ношу словно anton@g.mail.ru словно я роман\
 с продолженьем пишу'
mail = re.sub(r'([\w.-]+)@([\w.-]+\.?[\w]+?)', r'\1@supermail.com', str4)
print(mail)

'''
вывод:
письма на почту egor@supermail.com ношу словно anton@supermail.com словно я роман\
 с продолженьем пишу
'''
просмотры: 4032, уровень: лёгкий уровень, рейтинг: 5, дата: 2017-09-04 09:18:30
проголосовать:

Комментарии:

добавил(а): Светлана
дата: 2018-04-29 23:22:39
Спасибо!
добавил(а): Егор Астапов
дата: 2018-04-29 23:49:54
Привет Светлана! Пожалуйста )





поиск
реклама
банеры
домен RU всего за 99 рублей
http://trainingweb.ru/redirect/domains домен RU домен RU всего за 99 рублей
http://trainingweb.ru/redirect/well_web_vps_kvm Аренда VPS KVM в Европе Мы предлагаем в аренду VPS серверы с выделенным IP-адресом, которые полностью эмулируют физический сервер.
http://trainingweb.ru/redirect/pingadmin мониторинг сайтов сервис мониторинга работы сайта, мониторим HTTP, HTTPS, FTP, MYSQL, PostgreSQL, POP3, SMTP, IMAP