-3

我有一串如下的电子邮件

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

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

4

2 回答 2

2

总结一下大家的评论,

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

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

这样做可以让您拆分答案;以获得可能的电子邮件地址列表。但是,请看这个 SO 接受的关于使用 regex 验证电子邮件地址的问题的答案。电子邮件地址的格式和可能性如此之多,仅使用正则表达式就很难对其进行验证。

这是使用上述字符串进行定界的示例。

于 2012-05-30T13:08:54.610 回答
0

如果您保证:

  1. 所有电子邮件都以“test”或其他已知字符串开头,或
  2. 数据集中所有可能的域都是已知的。

如果你能做出一些保证,那么你可以在 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)/

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

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

于 2012-05-30T15:35:00.003 回答