我正在尝试提取文本列表中没有分隔符的电子邮件地址,这些分隔符可用于检测地址的开始和结束。我有一个这样的字符串:
EMAIL1 @ hotmail.comwelcome @ mydomain.atinfo @另一个-domain.detesting @ domain.or.atmy.name_test @ domainname.de
我正处于以下状态的正则表达式(不工作):
[a-zA-Z0-9.-]+@[a-zA-Z0-9-.]+.(com|at|de|or.at)
如果有人有解决方案,会非常有趣吗?也许是一种更好的方法来确定域名结尾,而不是拥有所有可能性的硬编码列表。
答案 0 :(得分:2)
您将需要该硬编码顶级域名列表,否则无法确定一个地址的结束位置以及下一个地址的开始位置。
你的正则表达式还不错,但是你需要转义.
(否则它将匹配任何字符,如果没有包含在character class中)并允许你的字符类中的下划线:
[a-zA-Z0-9._-]+@[a-zA-Z0-9_.-]+\.(com|at|de|or\.at)
适用于您的示例。