#python #regex
#python #регулярное выражение
Вопрос:
У меня есть следующие условия:
- Имеет символ «@»;
- Перед символом «@» может быть одна или несколько строк, состоящих из букв, цифр и символов подчеркивания, разделенных одной точкой.
- После символа «@» может быть две или более строк, состоящих из букв, цифр и символов подчеркивания, разделенных одной точкой.
- В адресе электронной почты не должно быть никаких других символов, кроме букв, цифр, знаков подчеркивания, точек и символа «@».
Например, ваше регулярное выражение должно соответствовать адресам электронной почты, таким как: abc@umich.edu, 8ab.c_def9@example.regex.com
Но ваше регулярное выражение не должно совпадать: abc@ def., ab..abc@def.com, abc@def
Как мне получить более одной строки, разделенной одной точкой, не вводя .
несколько раз (в зависимости от количества строк)?
Ответ №1:
Я не могу недооценивать качество инструкции по регулярному выражению Python. Чтение этого поможет вам стать лучшим программистом.
import re
pattern = re.compile(r'$([a-zA-Z0-9_] .)*[a-zA-Z0-9_] @([a-zA-Z0-9_] .) [a-zA-Z0-9_] ^')
Примечания
*
означает ноль или больше^
и$
являются началом и концом соответственно, чтобы исключить любой суффикс.
Должна быть экранирована обратная косая черта
Комментарии:
1. Спасибо! $ и ^ следует поменять местами, но в остальном все работает отлично.