结合正则表达式进行电子邮件抓取

2024-10-04 01:25:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两种表达方式:

1(\w+)[\s\(]at[\s\)](\w+)\sdot\s(\w+)\sdot\sedu
2(\w+)[\s\(]at[\s\)](\w+)\.(\w+)\.edu

第一个标识:

csk at cs dot xyz dot edu
csk(at)cs dot xyz dot edu

第二个标识:

csk at cs.xyz.edu
csk(at)cs.xyz.edu

如何将以上两者结合起来?我还想把@包括进去,我做的是:

(\w+)[\s\(][/at/@][\s\)](\w+)\sdot\s(\w+)\sdot\sedu

但它不起作用。有人能帮忙吗?我有很多格式要介绍,但不想写每个正则表达式显式。你知道吗


Tags: 格式csdot标识ateduxyzcsk
2条回答

[/at/@]与您认为的不匹配。[...]表示字符集,因此该部分匹配单个字符/at@。你知道吗

为了匹配at@,您需要使用:

(?:at|@)

这里是Python的Regular Expression Syntax的参考。你知道吗

将不同的模式放在一个非捕获组中,由|逻辑OR运算符分隔。你知道吗

(\w+)[\s\(](?:at|@)[\s\)](\w+)(?:\sdot\s(\w+)\sdot\sedu|\.(\w+)\.edu)

必要时添加锚。你知道吗

^(\w+)[\s\(](?:at|@)[\s\)](\w+)(?:\sdot\s(\w+)\sdot\s|\.(\w+)\.)edu$

DEMO

相关问题 更多 >