我有一串字符串,我想要获取其中的href="adkjfjadjfa" 这段字符串,这样的字符串,在整个字符串中可能还有好几个,怎么用正则把它们匹配出来?注意:href= 这后面可能是" 也可能是' 
下面是我写的,只能匹配一段href="XXXXXXXX"; 并且只能获取双引号类型的import java.util.regex.*;public class Test {
public static void main(String[] args) {
String ptn = ".*href=(.*\")";
Pattern p = Pattern.compile(ptn, Pattern.DOTALL);
String s = "asdfadfaadf-href=\"1alkjdflkajdfjalkdfj1\"adfadfhref=\'1alkjdflkajdfjalkdfj1\'ad"; // \" 转义 ,表示"
Matcher m = p.matcher(s);
if (m.find()) {
System.out.println("href="+m.group(1));
} else {
System.out.println("not match");
}
}
}结果只匹配到一个:
href="1alkjdflkajdfjalkdfj1"

解决方案 »

  1.   


    import java.util.regex.*;
      
    public class Demo {
        static String ptn = "(href=[\"\']*)([^\"\']*[\"\'])";
        static Pattern p = Pattern.compile(ptn);
        public static void main(String[] args) {
            String s = "adfadfa-href=\"1alkjdflkajdfjalkdfj1\"adsffaadfadfa-href=\'1alkjdflkajdfjalkdfj1\'"; // \" 转义 ,表示"
            find(s);
             
        }
        public static void find(String str){
            Matcher m = p.matcher(str);
            while (m.find()) {
                System.out.println(m.group(0));          
            }
        }
    }这样的
      

  2.   

     String  regec= "(href=[\"\'].*?[\"\'])";
      

  3.   


    static String ptn = "href=[\"|\'](.+?)[\"|\']";
        static Pattern p = Pattern.compile(ptn);
        public static void find(String str){
            Matcher m = p.matcher(str);
            while (m.find()) {
                System.out.println(m.group(1));          
            }
        }