假设电子邮件ID为abc@xyz.com
,我需要从中提取域名(即xyz)。
我在正则表达式中是全新的。通过google搜索,我找到了this conversation的可能解决方案。尝试了类似的事情:
if("abc@xyz.com".matches(".*\\xyz\\b.*")){
//true
}
但它对我没用。有没有解决方案。
答案 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库的域名表达式。有数千种方法可以匹配域名。在你的情况下,如果你确定你收到了一个电子邮件地址,我给你的正则表达式应该可以正常工作。
<强>参考强>