Я использую следующий код в настоящее время:Как проверить, что строка является электронной почтой?
regexp = re.compile(r'[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}', re.IGNORECASE)
email = regexp.findall(stext)
if email:
email = email[0]
Но он будет работать даже тогда, когда stext
содержит другой текст, а кроме того, по электронной почте (для бывших, some text [email protected] some other text
.). Когда я хочу проверить, содержит ли stext
[email protected]
только (нормально, возможно, с ведущими или/или конечными пробелами, никакими другими символами).
PS. Я также думаю, что, вероятно, я должен использовать mail.is_email_valid
вместо регулярного выражения, это will allow me для поддержки длинных доменов, таких как .museam
или локальных доменов, таких как .рф
.
Вы можете использовать специальные символы '^' и '$' для соответствия началу и концу строки, соответственно. Что-то вроде 'r '^ [A-Z0-9 ._% + -] + @ [A-Z0-9 .-] + \. [A-Z] {2,4} $'' запустит вас. – jedwards
http://docs.python.org/2/library/re.html#search-vs-match –