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

Combining regular expressions for email scraping

我有两种表达方式:

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

但它不起作用。有人可以帮忙吗?我有很多格式要涵盖,但不想明确地编写每个正则表达式。

将不同的模式放在由 | 逻辑 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

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

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

(?:at|@)

这是对 Python 的 Regular Expression Syntax 的引用。