当在模式中找到模式时,发现Java正则表达式抛出exception没有匹配

我很想弄清楚为什么正则表达式不匹配。 任何帮助深表感谢。 我将逐行浏览网页(工作正常),但我需要为每一行提取链接。 应用程序将检查该行中是否有链接,但我需要实际提取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。 提前致谢!

第一次打电话

 m.find(); 

要么

 m.matches(); 

如果匹配器成功,你将能够使用m.group()

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

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

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