Я пытаюсь найти код, который будет соответствовать регулярному выражению по электронной почте для проекта. Таковы требования:Python группировка регулярных выражений?
Email должен быть в форме Acct @ домен
Я понял, учетный часть с кодом:
if re.search("^[a-zA-z0-9]+[a-zA-z0-9-_]*$|^[a-zA-z0-9]+[a-zA-z0-9-_]+[\.]{1}[a-zA-z0-9]{2,}$", email):
print "valid!"
Также домен:
if re.search("^[a-zA-z0-9]+[a-zA-z0-9-_]+[\.]{1}[a-zA-z0-9]{2,}$", email):
print "valid!"
Моя проблема заключается в том, что я не могу понять, как группировать их вместе и положил знак @
Я пробовал следующее, но он не работает.
if re.search("(^[a-zA-z0-9]+[a-zA-z0-9-_]*$|^[a-zA-z0-9]+[a-zA-z0-9-_]+[\.]{1}[a-zA-z0-9]{2,}$)@(^[a-zA-z0-9]+[a-zA-z0-9-_]+[\.]{1}[a-zA-z0-9]{2,}$)", email):<br>
print "valid!
"
ЭТО НЕ РАБОТАЕТ! Я не могу получить его, чтобы когда-либо совпадают. Если у вас есть предложения, которые делают код менее nooby пожалуйста, дайте мне знать!
Откуда берутся эти требования? Они дурацкие. Достаточно часто иметь адреса электронной почты, такие как 'u.thant @ un.example.org', просто потому, что имя некоторых людей - это одна буква. – tripleee
Также квантификатор '{1}' совершенно лишний, а обратная косая черта в символьном классе соответствует буквальной обратной косой чертой. Вы хотите просто либо '\ .', либо' [.] '. – tripleee
Вы разрешаете только один период в имени учетной записи или части домена. Ваши требования подразумевают, что допускается использование нескольких периодов, если между ними имеется несколько буквенно-цифровых символов. Это немного сложно объединить - вы можете использовать утверждения lookahead для объединения нескольких перекрывающихся ограничений, но это значительно усложняет регулярное выражение. Учитывая, что требования, похоже, все равно вытягиваются из тонкого воздуха, я не уверен, что это стоит усилий; но вы наверняка найдете сотни примеров подобных вопросов на этом сайте, чтобы учиться. – tripleee