这是原始的 
<a href="http://a">b</a>现在希望用正则匹配出string里面有多少个下面写法的字符串 <a href="http://任意1或https://任意2">任意3</a>
其中任意1任意2是https或者http开头的link(要符合link标准)
任意3是link的名字 例如: 
---------------------- 
String = 
<a href="http://a">b</a>
<p> <body> 
<a href="http://a">b</a>
<img  src="http://sina/sina.gif" /> 
<a href="http://a.b.c">b</a>
----------- 则结果为1

解决方案 »

  1.   

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class RegxATag { public static void main(String[] args) {
    //<a[^<>]+href="https?://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]"[^<>]*>.*</a>
    final String REGEX = "<a[^<>]+href=\"https?://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]\"[^<>]*>.*</a>";
    String test =
    "<a href=\"http://a\">b </a>\n" +
    "<p> <body>\n" +
    "<a href=\"http://a\">b </a>\n" +
    "<img  src=\"http://sina/sina.gif\" />\n" +
    "<a href=\"http://a.b.c\">b </a> ";
    Pattern p = Pattern.compile(REGEX, Pattern.CASE_INSENSITIVE);
    Matcher m = p.matcher(test);
    int n = 0;
    while (m.find()) n++;
    System.out.println("找到" + n + "个匹配的标签");
    }}
      

  2.   


    public static void main(String[] args) {
    String str = "";
    Map map=new Hashtable();
    Pattern pattern = Pattern.compile("<a href=\"https?[^>]+>([^<]+)</a>",Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
    Matcher m = pattern.matcher(str);
    while(m.find()){
    //在这里把数据进行判断,然后压到map里,
    //如果map里有这条记录,记录数+1,
    }
    }