【发布时间】:2020-11-30 06:35:32
【问题描述】:
我的要求是-
name:名称是小于或的字母数字字符串 等于 12 个字符。允许的附加字符是 破折号 (-)、句点 (.) 和下划线 (_)。但是邮件 不能以这些附加字符开头或结尾。 该名称还必须至少有 1 个字符长。 示例名称值: 一个, ab, a_b, A B C D, 1nt3r3st.1ng
域:域是严格数字的,数字必须是 可被 5 整除。域的长度不受限制。 示例域值: 984125, 0
结尾:电子邮件必须以 (.com) 或 (.ca) 结尾(区分大小写)
示例:
find_special_email('12345a_test_email@165265365.com!')
'a_test_email@165265365.com'
我尝试过的:
import re
def find_special_email(str):
match = re.search(r'[a-zA-Z0-9_\.-]{1,12}@[0-9]+\.(com|ca)(\.[a-z]{2,3})?', str)
return match.group(0)
print(find_special_email('12345a_test_email@165265365.com!'))
print(find_special_email('A__B..C--D@165265365.com!'))
我的问题:
- 电子邮件不能以这些附加字符开头或结尾,例如破折号 (-)、句点 (.) 和下划线 (_)
- 不知道如何匹配能被5整除的“域”
【问题讨论】:
-
正则表达式不太适合数字,但这个特殊的数字要求可以改写为“以 0 或 5 结尾”。
-
根据定义,域名不区分大小写。
-
你的“例子”很奇怪。为什么要提取部分地址?
标签: python regex regex-lookarounds regex-group