欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java中的正则匹配 博客分类: Java JavaSwingXMLHTML 

程序员文章站 2024-03-16 10:18:46
...
想用Java解析Html里面的标签,例如我要解析html里面的 <link rel="openid.server" href="http://www.xxxxxx.com" />。可以使用 javax.swing.text.html.parser 或者org.htmlparser 或者 javax.xml.parsers.SAXParser。不过,要求Html必须是一个规范的XML格式,而网页基本上都不符合。

所以采用正则匹配来解决。
import ...
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public final class HttpTookit {
    private static Log log = LogFactory.getLog(HttpTookit.class);

    public static String doGet(String url, String queryString) {
        ...
        return response;
    }

    public static void main(String[] args) {
        String x = doGet("http://www.xxxxx.com", "");
        System.out.println(x);
        Pattern p = Pattern.compile(".* href=\"(.*)\" />.*");
        Matcher m  = p.matcher(x);
        //m.matches(); 不知道为什么这里匹配不到
        if (m.find()) {
        	System.out.println("m.group():" + m.group(1));
        }

    }
}


matcher.find() 和 matcher.matches()的区别:matches是将整个输入串与模式匹配,find是查找输入串中与模式匹配的子串。但是为什么m.matches()在这里匹配不到呢?