正则表达式从一长串字符中抓取电子邮件

时间:2016-07-14 20:36:30

标签: regex grep

我有一个大文本文件,这是一个非常长的字符串。我的目标是提取“personEmail”和“created”之间的所有电子邮件地址,文件中还有其他电子邮件,但我想要那些特定的电子邮件。我还想计算文本文件中每个电子邮件地址的出现次数,下面是一个摘录:

  

GFyazovL3VzL1BFT1BMRS9mNWQzMGMyYi1mZDMyLTRhYTYtYjZhYS1iYTdkYWNjZWZiN2M“,”personEmail“:”user1@provider.com“,”created“:”2016-07-13T19:19:14.934Z“,”html“:”blah-forth data-object-type = \ “person \”data-objectid = \“Y2lzY29zcGFyazovL3VzL1user2@provider.comBFT1BMRS81MjhlZDZiMi1jODM4LTQzNDAtOWE2ZC0xMmRmYzI5YWU5

我希望能够使用grepsedawk来实现它,如果可能的话可能会使用uniq -c,我知道如何使用{{1如果有多个字符串,但如果文件只是一个非常长的字符串本身就没有。对此有快速解决方案吗?

1 个答案:

答案 0 :(得分:1)

描述

make; make check; make install

Regular expression visualization

**要更好地查看图像,只需右键单击图像并在新窗口中选择视图

此正则表达式将执行以下操作:

  • 找到与(?<="personEmail":")[^"]+(?=") 字段
  • 相关联的值

实施例

现场演示

https://regex101.com/r/aH1nO9/2

示例文字

  

GFyazovL3VzL1BFT1BMRS9mNWQzMGMyYi1mZDMyLTRhYTYtYjZhYS1iYTdkYWNjZWZiN2M“,”personEmail“:”user1@provider.com“,”created“:”2016-07-13T19:19:14.934Z“,”html“:”blah-forth data-object-type = \ “person \”data-objectid = \“Y2lzY29zcGFyazovL3VzL1user2@provider.comBFT1BMRS81MjhlZDZiMi1jODM4LTQzNDAtOWE2ZC0xMmRmYzI5YWU5

样本匹配

personEmail

解释

MATCH 1
0.  [87-105]    `user1@provider.com`