2016-07-14 57 views
1

我有一个很大的文本文件,它是一个非常长的字符串。我的目标是提取所有在“personEmail”和“created”之间的电子邮件地址,文件中还有其他电子邮件,但我只想要那些特定的电子邮件地址。我也想算在文本文件中的所有电子邮件地址出现的次数,下面是摘录:正则表达式从一个长字符串中获取电子邮件

GFyazovL3VzL1BFT1BMRS9mNWQzMGMyYi1mZDMyLTRhYTYtYjZhYS1iYTdkYWNjZWZiN2M“‘personEmail’:‘[email protected]’,‘创造’:” 2016-07-13T19:19:14.934Z “ ”HTML“: ”嗒嗒提及数据对象类型= \“ 人\” 数据的objectid = \“[email protected]M4LTQzNDAtOWE2ZC0xMmRmYzI5YWU5

我希望可以用grepsedawk来实现,如果可能的话可以用uniq -c来计算,我知道如何用来做到这一点如果存在多个字符串,但不存在,如果该文件本身只是一个非常长的字符串。有没有快速解决这个问题?

+0

根据您的示例文本,你可以用这个正则表达式匹配的邮件:'perso nEmail“:”(\ w + @(?:\ w + \。)+ \ w +)“'(您可以根据需要改进电子邮件正则表达式,这里有很多示例)。 – Alfeu

回答

1

说明

(?<="personEmail":")[^"]+(?=") 

Regular expression visualization

**要看到图像更好,只需右键点击在新窗口中的图像,然后选择查看

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

  • 找到val UE相关联的personEmail字段

现场演示

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

示例文本

GFyazovL3VzL1BFT1BMRS9mNWQzMGMyYi1mZDMyLTRhYT ytYjZhYS1iYTdkYWNjZWZiN2M“,”personEmail“:”[email protected]“,”created“:”2016-07-13T19:19:14.934Z“,”html“:”blah-data-object-type = \“person \ “数据OBJECTID = \” [email protected]M4LTQzNDAtOWE2ZC0xMmRmYzI5YWU5

样品匹配

MATCH 1 
0. [87-105] `[email protected]vider.com` 

说明

NODE      EXPLANATION 
-------------------------------------------------------------------------------- 
    (?<=      look behind to see if there is: 
-------------------------------------------------------------------------------- 
    "personEmail":"   '"personEmail":"' 
-------------------------------------------------------------------------------- 
)      end of look-behind 
-------------------------------------------------------------------------------- 
    [^"]+     any character except: '"' (1 or more times 
          (matching the most amount possible)) 
-------------------------------------------------------------------------------- 
    (?=      look ahead to see if there is: 
-------------------------------------------------------------------------------- 
    "      '"' 
-------------------------------------------------------------------------------- 
)      end of look-ahead 
相关问题