正则表达式 Select HTML 中的不同电子邮件格式
Regex Select Different Email Formats in HTML
我是 Regex 的新手,目前正在编写一个 Scrapy 爬虫来收集电子邮件地址。
我希望在抓取时能够select 不同格式的电子邮件。现在我只找到带有 @ 符号的任何东西 - 但想变得更聪明一点。
如何select使用以下格式发送电子邮件?
- 信息@example.com
- 信息 [at] 示例 [dot] com
- 信息在 example.com 信息
- 示例.com 中的信息
这是我目前拥有的:
item['mail'] = hxs.select('//body//text()').re(r'[\w.-]+@[\w.-]+')
这是我能想到的最好的办法,但我真的不知道它是否适合你,除非你提供更多示例。
对于您问题中的当前示例,它有效。如果您不关心比这更复杂的电子邮件地址,那么这对您来说应该没问题。
[\w.-]+ ?(?:@|\[?at]?) ?[\w.-]+(?: ?\[?dot]? ?[\w.-]+)?
那我在这里做了什么?
我在 @
符号处进行了交替,以便它可以通过使用带有惰性量词的可选空格和括号来接受 [at]
或 at
:?
?(?:@|\[?at]?) ?
^ ^
lazy spaces
我在表达式的末尾做了类似的事情,但我将整个非捕获组设为可选,否则它会弄乱您示例电子邮件中的前几行。
我是 Regex 的新手,目前正在编写一个 Scrapy 爬虫来收集电子邮件地址。
我希望在抓取时能够select 不同格式的电子邮件。现在我只找到带有 @ 符号的任何东西 - 但想变得更聪明一点。
如何select使用以下格式发送电子邮件?
- 信息@example.com
- 信息 [at] 示例 [dot] com
- 信息在 example.com 信息
- 示例.com 中的信息
这是我目前拥有的:
item['mail'] = hxs.select('//body//text()').re(r'[\w.-]+@[\w.-]+')
这是我能想到的最好的办法,但我真的不知道它是否适合你,除非你提供更多示例。
对于您问题中的当前示例,它有效。如果您不关心比这更复杂的电子邮件地址,那么这对您来说应该没问题。
[\w.-]+ ?(?:@|\[?at]?) ?[\w.-]+(?: ?\[?dot]? ?[\w.-]+)?
那我在这里做了什么?
我在 @
符号处进行了交替,以便它可以通过使用带有惰性量词的可选空格和括号来接受 [at]
或 at
:?
?(?:@|\[?at]?) ?
^ ^
lazy spaces
我在表达式的末尾做了类似的事情,但我将整个非捕获组设为可选,否则它会弄乱您示例电子邮件中的前几行。