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

时间:2015-01-16 01:25:57

标签: python regex email

我有两个表达方式:

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在cs.xyz.edu
  CSK(AT)cs.xyz.edu

我如何结合以上两个?我还想在其中加入 @ ,我做的是:

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

(?:at|@)

以下是Python Regular Expression Syntax的参考资料。