正则表达式 Select HTML 中的不同电子邮件格式

Regex Select Different Email Formats in HTML

我是 Regex 的新手,目前正在编写一个 Scrapy 爬虫来收集电子邮件地址。

我希望在抓取时能够select 不同格式的电子邮件。现在我只找到带有 @ 符号的任何东西 - 但想变得更聪明一点。

如何select使用以下格式发送电子邮件?

这是我目前拥有的:

item['mail'] = hxs.select('//body//text()').re(r'[\w.-]+@[\w.-]+')

这是我能想到的最好的办法,但我真的不知道它是否适合你,除非你提供更多示例。

对于您问题中的当前示例,它有效。如果您不关心比这更复杂的电子邮件地址,那么这对您来说应该没问题。

[\w.-]+ ?(?:@|\[?at]?) ?[\w.-]+(?: ?\[?dot]? ?[\w.-]+)?

那我在这里做了什么?
我在 @ 符号处进行了交替,以便它可以通过使用带有惰性量词的可选空格和括号来接受 [at]at?

 ?(?:@|\[?at]?) ?
^              ^
   lazy spaces

我在表达式的末尾做了类似的事情,但我将整个非捕获组设为可选,否则它会弄乱您示例电子邮件中的前几行。

https://regex101.com/r/aC4kW3/1