我被要求写一个可以捕获多域电子邮件地址并在python中实现的正则表达式。所以我想出了以下正则表达式(和代码;虽然重点是正则表达式),但我认为这是正确的:
import re
regex = r'\b[\w|\.|-]+@([\w]+\.)+\w{2,4}\b'
input_string = "hey my mail is abc@def.ghi"
match=re.findall(regex,input_string)
print match
现在,当我运行此命令(使用非常简单的邮件)时,它无法捕获!!
而是显示一个空列表作为输出。有人可以告诉我正则表达式文字在哪里出错了吗?
最佳答案
这是一个简单的开始
regex = r'\b[\w.-]+?@\w+?\.\w+?\b'
re.findall(regex,input_string) # ['abc@def.ghi']
原来的问题是您不需要字符类(
|
)中的[..]
运算符。只需将[\w|\.|-]
编写为[\w.-]
(如果-
位于末尾,则无需转义)。接下来,合法域名会有太多变化。只需在
@
符号后查找至少一个由单词字符包围的句点:@\w+?\.\w+?\b
关于python - 正则表达式用于python中的电子邮件解析,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34646989/