正则表达式匹配并通过模式JAVA获取字符串

时间:2015-03-09 03:41:08

标签: java regex string

我这里有电子邮件模式

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");
}

我不知道如果我的代码是正确的,但我只是简单地关注一些关于使用正则表达式在字符串上获取单词的文章。

1 个答案:

答案 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