我这里有电子邮件模式
Pattern pattern = Pattern.compile("^[A-Za-z0-9+_.-]+@(.+)$");
我也有一个包含消息的字符串
String message = "Han hannibal@domain.com im 20 years old, i just came here to say nothing..";
我的问题是将模式与字符串匹配时我什么都没得到。我在做什么
Pattern pattern = Pattern.compile(pattern);
Matcher m = pattern.matcher(message);
if(m.find()) {
Log.d("TAG", m.group(1));
}else {
Log.d("TAG", "No email found on string");
}
我不知道如果我的代码是正确的,但我只是简单地关注一些关于使用正则表达式在字符串上获取单词的文章。
答案 0 :(得分:0)
您需要从正则表达式中删除锚点。
Pattern pattern = Pattern.compile("\\b[A-Za-z0-9+_.-]+@(?:[^.\\s]+\\.)+\\w{2,4}\\b");
示例:强>
String message = "Han hannibal@domain.com im 20 years old, i just came here to say nothing..";
Pattern pattern = Pattern.compile("\\b[A-Za-z0-9+_.-]+@(?:[^.\\s]+\\.)+\\w{2,4}\\b");
Matcher m = pattern.matcher(message);
if(m.find())
{
System.out.println("TAG " + m.group());
}
else {
System.out.println("TAG " + "No email found on string");
}
<强>输出:强>
TAG hannibal@domain.com