当模式在行中找到时,Java正则表达式抛出异常,找不到匹配项

时间:2014-03-25 11:59:22

标签: java regex matcher

我正在试图弄清楚为什么正则表达式不匹配。任何帮助深表感谢。我将逐行浏览网页(工作正常),但我需要为每一行提取链接。应用程序将检查该行中是否有链接,但我需要实际提取URL。帮助

Pattern p = Pattern.compile("^.*href=\"([^\"]*)");
Matcher m = p.matcher(result);
String urlStr = m.group();
links.add(urlStr);

我不断收到的错误信息是:

Exception in thread "main" java.lang.IllegalStateException: No match found
at java.util.regex.Matcher.group(Matcher.java:485)

即使'result'中有一个链接引用(hxxp://www.yahoo.com)。

links是一个ArrayList fyi。提前谢谢!

2 个答案:

答案 0 :(得分:11)

先打电话

m.find();

m.matches();

然后,如果匹配器成功,您就可以使用m.group()

答案 1 :(得分:0)

好的,所以我明白了。唯一的问题是,我的正则表达式必须是

".*href=\"([^\"]*?)\".*"

然后制作了代码

private String regex = ".*href=\"([^\"]*?)\".*";
private Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(result);
if (m.matches()) {
    String urlStr = m.group(1);
    links.add(urlStr);
}

所以这是我的正则表达式的问题,我不得不使用'?'我猜不要贪心!