【问题标题】:find out the domain from an emailId through regex in java通过java中的正则表达式从emailId中找出域
【发布时间】:2014-06-25 09:30:47
【问题描述】:

假设电子邮件 ID 是 abc@xyz.com,我需要从中提取域名(即 xyz)。 我是正则表达式的新手。通过谷歌搜索,我从 this conversation 找到了一个可能的解决方案。并尝试了类似的东西:

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

但这对我不起作用。有什么解决办法吗?

【问题讨论】:

  • 请添加 cmets 以进行否定投票..这样我才能找出我的错误..
  • 您的问题没有显示任何认真的研究工作,只是要求提供代码。此外,“你尝试了什么”只是垃圾,与问题无关。
  • @Theolodis 我在我的问题中找不到任何反对投票的理由。我也没有说你错了。我欢迎它。
  • 我并不是说这个问题绝对愚蠢,但我不会问它,因为它可以通过谷歌搜索 5 分钟来解决。
  • @Theolodis 我接受了我的错误。以后我会尽量忽略这类错误。感谢您的精彩评论。

标签: java regex


【解决方案1】:

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

(?<=@)\S+

demo

  • (?&lt;=@) 是一个lookbehind,检查前面是一个@
  • \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 库的域名表达式。匹配域名的方法有数千种。在你的情况下,如果你确定你收到了一个电子邮件地址,那么我给你的正则表达式应该可以正常工作。

参考

【讨论】:

  • 感谢您的回答。+1 的测试链接。让我先尝试解决方案。
  • 非常感谢。您的正则表达式部分对我的逻辑帮助很大
  • 不客气……下次见,Ranjit! :)
猜你喜欢
  • 2016-11-24
  • 2010-10-06
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
  • 1970-01-01
  • 2015-04-27
  • 2011-05-04
  • 1970-01-01
相关资源
最近更新 更多