我有一串如下的电子邮件
“test@test.comtest.test1@test.comtest@yahoo.co.intest1.test2@support.yahoo.com”
我想将其转换为一组有效的电子邮件地址。我一直在尝试通过使用正则表达式来解决这个问题。
总结一下大家的评论,
您确实需要更好地划分数据。例如,您可能会这样做:
test@test.com;test.test1@test.com;test@yahoo.co.in;test1.test2@support.yahoo.com
这样做可以让您拆分答案;
以获得可能的电子邮件地址列表。但是,请看这个 SO 接受的关于使用 regex 验证电子邮件地址的问题的答案。电子邮件地址的格式和可能性如此之多,仅使用正则表达式就很难对其进行验证。
这是使用上述字符串进行定界的示例。
如果您能保证:
如果你能做出一些保证,那么你可以在 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)/
换句话说,如果它是夹具数据,请修复您的夹具以具有合理的分隔符。这将花费更少的时间并且更不容易出错。
另一方面,如果它是真实数据,那么您不太可能将它们分开。将任意域名与任意尾随邮箱名称区分开来是不切实际的。