如何解析非分隔的电子邮件地址字符串?

时间:2012-05-30 12:58:48

标签: regex email

我有一串电子邮件,如下面的

“测试@ test.comtest.test1 @ test.comtest @ yahoo.co.intest1.test2 @ support.yahoo.com”

我想将其转换为有效电子邮件地址数组。我一直试图通过使用正则表达式来解决这个问题。

2 个答案:

答案 0 :(得分:2)

总结每个人的评论,

您确实需要更好地划分数据。例如,你可以这样做:

  

test@test.com; test.test1@test.com; test@yahoo.co.in; test1.test2@support.yahoo.com

执行此操作可让您在;上拆分答案,以获取可能的电子邮件地址列表。但是,看看这个SO已接受的关于the problem with validating email addresses using regex的回答。电子邮件地址有很多格式和可能性,只有正则表达式很难验证它们。

以下是使用上述字符串的example of delimiting

答案 1 :(得分:0)

如果您能保证:

可能能够这样做
  1. 所有电子邮件都以“test”或其他一些已知字符串开头,或
  2. 您的数据集中的所有可能域都是已知的。
  3. 如果你能做出一些保证,那么你可以在Ruby中做这样的事情:

    emails = "test@test.comtest.test1@test.comtest@yahoo.co.intest1.test2@support.yahoo.com"
    
    # Test for a known string ending in a known domain.
    emails.scan /(test.*?[.](?:com|in))/
    
    # Test for known domains with positive lookbehind.
    emails.scan /(?<=^|com|in).*?(?:com|in)/
    

    换句话说,如果是夹具数据,请修复您的灯具以获得合理的分隔符。这将花费更少的时间,并且不易出错。

    另一方面,如果它是真实数据,那么你不太可能将它们分开。将任意域名与任意尾随邮箱名称区分是不切实际的。