假设电子邮件ID是abc@xyz.com,我需要从中提取域名(即xyz).我是正则表达式的新手.通过谷歌搜索,我发现了这个对话可能的解决方案.并试过类似的东西:
if("abc@xyz.com".matches(".*\\xyz\\b.*")){
//true
}
Run Code Online (Sandbox Code Playgroud)
但它对我不起作用.对此有什么解决方案吗?
最简单的,你可以使用这个正则表达式:
(?<=@)\S+
Run Code Online (Sandbox Code Playgroud)
见演示.
(?<=@) 是一个后视,检查先前的是什么 @\S+ 匹配所有不是空格字符的字符在Java中,您可以这样做(在几种方式中):
Pattern regex = Pattern.compile("(?<=@)\\S+");
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
ResultString = regexMatcher.group();
}
Run Code Online (Sandbox Code Playgroud)
笔记
\S+适用于您呈现的字符串,但它是一个可以匹配各种字符的"粗略工具".如果你想要更具体的东西,你可以用以下代替\S+:
(?i)\b([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}\b
Run Code Online (Sandbox Code Playgroud)
这是来自RegexBuddy库的域名表达式.有数千种方法可以匹配域名.在你的情况下,如果你确定你收到了一个电子邮件地址,我给你的正则表达式应该可以正常工作.
参考
| 归档时间: |
|
| 查看次数: |
1392 次 |
| 最近记录: |