Java中的正则匹配

想用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()在这里匹配不到呢?

你可能感兴趣的:(java,html,xml,swing)