在网页上使用正则表达式查找电子邮件地址

-1 投票
1 回答
1760 浏览
提问于 2025-04-18 06:10

我正在尝试使用正则表达式中的findall()函数,从一个网址中找出电子邮件地址。这是我想要的结果(在命令行中输入的内容):

>>>from urllib.request import urlopen
>>>url = 'http://www.cdm.depaul.edu'
>>>content = urlopen(url).read().decode()
>>>emails(content)
>>>{'advising@cdm depaul.edu' , 'wwwfeedback@cdm.depaul.edu' ,
admission@cdm.depaul.edu' , 'webmaster@cdm.depaul.edu' }

这是我的代码:

def emails(doc):
    return findall('[\d]*@[\d]+', don't know what to set second argument as)

我知道这很简单,但我搞不清楚我的第二个参数应该是什么,所以我一直得到一个空列表。有人能告诉我为什么吗?

1 个回答

2

你需要提供一个叫做 content 的内容,这个内容是通过参数 doc 传入的:

def emails(doc):
    return findall('[\d]*@[\d]+', doc)

re.findall 的用法是这样的: re.findall(pattern, string, flags=0)

另外,你的正则表达式似乎有点问题。你现在匹配的是 "numbers@numbers"。

你可能想要的是这样的:

def emails(doc):
    return findall('[\w.]+@[\w.]+', doc)

撰写回答