pythonxxx中的正则表达式

2024-09-25 10:21:17 发布

您现在位置:Python中文网/ 问答频道 /正文

import re
email="skoal.com abc@com 123@abx.ty.com2 Manan.5587@gmail.com   abc@bhe.com"
print("Email Matches",len(re.findall("[\w._%+-]{1,20}@[\w.-]{2,20}.[A-Za-z]{2-3}",email)))

这段代码应该能够验证正确输入的电子邮件地址,但它没有这样做,无法找到错误需要帮助作为一个新的学习者

我学习这个在线代码似乎是正确的,但我想要的输出不是我得到的

我总是将输出设置为0


Tags: 代码importrecomemailgmailabcprint
2条回答

有几个问题

首先使用原始字符串r""。如果没有r,则会错误地转义值

第二,在点.上进行匹配时,应该将其转义。否则将匹配任何字符

最后[A-Za-z]{2-3}是不正确的。你需要做[A-Za-z]{2,3}

# incorrect
"[\w._%+-]{1,20}@[\w.-]{2,20}.[A-Za-z]{2-3}"

# correct
r"[\w._%+-]{1,20}@[\w.-]{2,20}\.[A-Za-z]{2,3}"

例如:

import re
emails = "skoal.com abc@com 123@abx.ty.com2 Manan.5587@gmail.com   abc@bhe.com"
regex = r"[\w._%+-]{1,20}@[\w.-]{2,20}\.[A-Za-z]{2,3}"

print("Email Matches:", re.findall(regex, emails))
Email Matches: ['123@abx.ty.com', 'Manan.5587@gmail.com', 'abc@bhe.com']

一般来说,在编写正则表达式时,从简单开始,然后逐步提高。调试时,首先测试r"[\w._%+-]{1,20}",然后测试r"[\w._%+-]{1,20}@[\w.-]{2,20}",等等,直到完整的正则表达式正常工作,并验证是否符合每次迭代的预期

我正在写答案,因为我没有评论权限。以下工作:

email="skoal.com abc@com 123@abx.ty.com2 Manan.5587@gmail.com   abc@bhe.com"

print("Email Matches",len(re.findall("[\w._%+-]{1,20}@[\w.-]{2,20}.[A-Za-z]{2,3}",email)))

注意{2,3}而不是{2-3}

相关问题 更多 >