我正在试图弄清楚为什么正则表达式不匹配。任何帮助深表感谢。我将逐行浏览网页(工作正常),但我需要为每一行提取链接。应用程序将检查该行中是否有链接,但我需要实际提取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。提前谢谢!
答案 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);
}
所以这是我的正则表达式的问题,我不得不使用'?'我猜不要贪心!