**注意:我已经在Stack Overflow上大量研究了这个问题,还没有找到解决方案!我无法将其他答案应用到我的问题中,所以我需要一些帮助。* *
挑战:我想从一个字符串得到一个电子邮件地址,但我有麻烦的电子邮件地址只与Regex。
我想从HTML的电子邮件地址是:
query-e1h1.net
HTML为:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">rn<html xmlns="http://www.w3.org/1999/xhtml">rn<html>rn<head></head>rn<body>rn<a name="top"></a>Back to Category Index</a></p>rn<p>-----------------------------------<br/></p>rnrn67)<a name="e1h1" id="e1h1"></a> Summary: Solar Eclipse 2024 Travelrn<br/><br/>rn<p>Name: laure gem wilsonrnRoadtrippersrn</p>Category: Travelrn<br/><br/>rnEmail: <a href="mailto:query-e1h1@email.net">query-e1h1@email.net</a>rn<br/><br/>rnOutlet: Roadtrip<br/><br/>rnDeadline: 7:00 PM EST - 8 Julyrn<br/><br/>rn<p>rnQuery: rn<br/><br/>rnHi, I am on assignment to write a feature about planning a road<br/>trip to experience the Solar Eclipse 2024, including path of<br/>totality, advice about viewing, and recommendations for when and<br/>where to book accommodations, thanks!<br/>rn</p>rn<p>rnRequirements: rn<br /><br />rnMust be domestic USA<br/>rn</p>rn<p><a href="#top">Back to Top</a> <a href="#Travel">Back to Category Index</a></p>rn<p>-----------------------------------<br/>
我的Python代码是:
Query_Email = re.findall(r'Email:.+', msg_content[index_counter])
这回报:
<a href="mailto:query-e1h1@email.net">query-e1h1@email.net</a>
Authority Magazine<br/><br/>
您可以在mailto:
部分内获得电子邮件,并延迟赶上第一个">
:
mailto:(.*?)">
https://regex101.com/r/Xk4Ywk/1
这应该捕获组内的电子邮件。
如果您想从任何文本中提取电子邮件地址,邮件正则表达式是最受欢迎的regex之一,这样的正则表达式是很容易找到,只是谷歌邮件正则表达式,得到你的答案。我使用第一个搜索结果并稍微修改(我已经把b
-词边界而不是^
和$
-文本边界):
b[a-zA-Z0-9.! #$%&'*+/=? ^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*b
这是正则表达式的演示。
,
如果你想从HTML中提取信息,不要使用REGEX,因为:)
您可以使用Email:
前缀并使用捕获组:
bEmail:s*<as[^<>]*bhref="mailto:([^"]+)"
nEmail:s*
匹配Email:
,后跟可选的空白字符<as
匹配<a
后加空白字符[^<>]*
可选地匹配<
和>
以外的任何字符bhref="mailto:
匹配字边界([^"]+)"
捕获组1中双引号之间的值
Regex演示
import re
pattern = r"bEmail:s*<as[^<>]*bhref="mailto:([^"]+)""
s = """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">rn<html xmlns="http://www.w3.org/1999/xhtml">rn<html>rn<head></head>rn<body>rn<a name="top"></a>Back to Category Index</a></p>rn<p>-----------------------------------<br/></p>rnrn67)<a name="e1h1" id="e1h1"></a> Summary: Solar Eclipse 2024 Travelrn<br/><br/>rn<p>Name: laure gem wilsonrnRoadtrippersrn</p>Category: Travelrn<br/><br/>rnEmail: <a href="mailto:query-e1h1@email.net">query-e1h1@email.net</a>rn<br/><br/>rnOutlet: Roadtrip<br/><br/>rnDeadline: 7:00 PM EST - 8 Julyrn<br/><br/>rn<p>rnQuery: rn<br/><br/>rnHi, I am on assignment to write a feature about planning a road<br/>trip to experience the Solar Eclipse 2024, including path of<br/>totality, advice about viewing, and recommendations for when and<br/>where to book accommodations, thanks!<br/>rn</p>rn<p>rnRequirements: rn<br /><br />rnMust be domestic USA<br/>rn</p>rn<p><a href="#top">Back to Top</a> <a href="#Travel">Back to Category Index</a></p>rn<p>-----------------------------------<br/>"""
print(re.findall(pattern, s))
输出['query-e1h1@email.net']
注意如果你有一个dom解析器,那将是一个更好的选择。