java 使用正则表达式如何匹配 href="xxxxxx",就是要href整个字符串

如题所述

href  这几个字要不要? 如果只是要取出" "中的字符串的话,可以这样:

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 = "href=\"1alkjdflkajdfjalkdfj1\""; // \" 转义 ,表示"
Matcher m = p.matcher(s);
if (m.find()) {
System.out.println(m.group(1));
} else {
System.out.println("not match");
}
}
}

追问


而且单双引号的都要
例如:href="xxxxxx"或href='xxxxxxx'

追答

那你就在前面加上href这几个字符

追问

可能存在多个的喔,循环后,都唔对

追答

想明白了,可以用正则循环匹配,以下是代码,调试过了:

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));          
        }
    }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-16
List<String> hrefList = new ArrayList<String>();
// Pattern compile = Pattern.compile("<a .*?\\s+href=[\"'](http.+?)[\"']\\s*.*?>.*?</a>");
Pattern compile = Pattern.compile("<a .*?\\s+href=[\"'](http[^>^\"^']*).*?</a>");

Matcher matcher = compile.matcher(str);
while (matcher.find()) {
hrefList.add(matcher.group(1));
}
第2个回答  2013-10-16
String reg = "";
boolean flag = href.matchs(reg);