通过java中的regex从emailId中找出域名

时间:2014-06-25 09:30:47

标签: java regex

假设电子邮件ID为abc@xyz.com,我需要从中提取域名(即xyz)。 我在正则表达式中是全新的。通过google搜索,我找到了this conversation的可能解决方案。尝试了类似的事情:

 if("abc@xyz.com".matches(".*\\xyz\\b.*")){
     //true
 }

但它对我没用。有没有解决方案。

1 个答案:

答案 0 :(得分:7)

最简单的说,你可以使用这个正则表达式:

(?<=@)\S+

请参阅demo

  • (?<=@)是一个后视,检查前面的内容是@
  • \S+匹配所有不是空白字符的字符

在Java中,你可以这样做(有几种方法可以做到):

Pattern regex = Pattern.compile("(?<=@)\\S+");
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
 ResultString = regexMatcher.group();
    } 

备注

\S+适用于您提供的字符串,但它是一个可以匹配各种字符的“粗略工具”。如果您想要更具体的内容,可以将\S+替换为:

(?i)\b([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}\b

这是来自RegexBuddy库的域名表达式。有数千种方法可以匹配域名。在你的情况下,如果你确定你收到了一个电子邮件地址,我给你的正则表达式应该可以正常工作。

<强>参考