<link href="css/style.css" rel="stylesheet" type="text/css" /> 
<link rel="stylesheet" type="text/css" href="css/style.css" /> 
<link href="/css/style.css" rel="stylesheet" type="text/css"> <link href=css/style.css rel="stylesheet" type="text/css" /> 
href后面不含单,双引号且<link和href之间无空格外字符(可能含一个以上空格)。 
<link rel=stylesheet type="text/css" href='css/style.css' /> 
href后面接单引号且<link和href之间有字符。 <link href=/css/style.css rel='stylesheet' type="text/css"> 
<link href=/css/style.css> (非标准模式1) 
<link href=/css/style.css /> (非标准模式2) 要求同时匹配以上几种。

解决方案 »

  1.   

    public class Test {
        public static final void main(String[] args) {
            String[] ss = new String[] {
                "<link href=\"css/style.css\" rel=\"stylesheet\" type=\"text/css\" />",
                "<link rel=\"stylesheet\" type=\"text/css\" href=\"css/style.css\" />",
                "<link href=\"/css/style.css\" rel=\"stylesheet\" type=\"text/css\">",
                "<link href=css/style.css rel=\"stylesheet\" type=\"text/css\" />",
                "<link rel=stylesheet type=\"text/css\" href='css/style.css' />",
                "<link href=/css/style.css>",
                "<link href=/css/style.css />"
            };
            
            String regex = "<link\\s+.*?href=(\".+?\"|'.+?'|[^\"'].+?[^\"']).*>";
            
            for (int i = 0; i < ss.length; i++) {
                System.out.printf("%1$2d - %2$b\n", i, ss[i].matches(regex));
            }
        }
    }
      

  2.   

    <link[^>]*>(?<content>[^<]*)