<a href=http://news.xinmin.cn/shehui/2011/10/20/12434372.html  mon="a=5&pn=21"  target=_blank>
<a href=/ns?word=%BC%D7%BF%BA+cont:326196677&cl=1&tn=newstitle&rn=30>我要匹配url地址 url地址后面必须包含mon规则要能匹配到第一条,第2条则匹配不到第2个问题比如在百度搜索中国中国2子就成了 %D6%D0%B9%FA我要用JAVA 吧中国 变成%D6%D0%B9%FA
怎么弄呢

解决方案 »

  1.   

    第一个问题不是很明白。 不过应该可以用 string 的自带函数可以解决。、
    第二个问题, 用URLEncoder.encode 试试?
    我的博文:http://yijianfengvip.blog.163.com/blog/static/175273432201174115317795/
    看看可以解决不?
      

  2.   

    package com.glht.search.action;import java.net.URLDecoder;
    import java.net.URLEncoder;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class A { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Reg();
    TestUrl();
    } private static void Reg() {
    String content = "<a href=http://news.xinmin.cn/shehui/2011/10/20/12434372.html mon=\"a=5&pn=21\" target=_blank><a href=/ns?word=%BC%D7%BF%BA+cont:326196677&cl=1&tn=newstitle&rn=30>";
    Matcher matcher = Pattern.compile("href=(.*?)\\b+?mon", Pattern.DOTALL)
    .matcher(content);
    while (matcher.find()) {
    System.out.println(matcher.group(1));
    }
    } private static void TestUrl() {
    String con = "中国";
    con = URLEncoder.encode(con);
    System.out.println(con);
    con=URLDecoder.decode(con);
    System.out.println(con);
    }
    }
      

  3.   

    <a href=http://news.xinmin.cn/shehui/2011/10/20/12434372.html mon="a=5&pn=21" target=_blank>我要取到的结果是 http://news.xinmin.cn/shehui/2011/10/20/12434372.html<a href=/ns?word=%BC%D7%BF%BA+cont:326196677&cl=1&tn=newstitle&rn=30>
    则忽略掉所有 a标记里面必须有 mon="a=5&pn=21" target=_blank 才提前URL
    正则怎么写呢
      

  4.   

    必须有mon="a=5&pn=21" target=_blank,那直接用indexOf,没必要用正则表达式了
    public static void main(String[] args){
    String str ="<a href=http://news.xinmin.cn/shehui/2011/10/20/12434372.html mon='a=5&pn=21' target=_blank>";
    String s = "mon='a=5&pn=21' target=_blank";
    Pattern patt = Pattern.compile(".*href=(.*)mon='a=5&pn=21' target=_blank");
    Matcher m = patt.matcher(str);
    if(m.find()){
    System.out.println(m.group(1));
    }
    int start = str.indexOf("href=");
    int end = str.indexOf(s);
    System.out.println(str.substring(start, end));
    }
      

  5.   

    楼上的规则不行,完全没匹配到 吧 (.*) 改成 (.*?) 还好点字符串例子;<a href=http://www.cnr.cn/allnews/201110/t20111024_508671392.html  mon="a=5&pn=10"  target=_blank><font color="#C60A00">甲亢</font>的饮食上要注意什么 <font color="#C60A00">甲亢</font>不能吃什么 全国最好的<font color="#C60A00">甲亢</font>...</a>&nbsp;<font class=g size=1>中国广播网 2011-10-24 11:12</font>&nbsp;<a href=/ns?word=%BC%D7%BF%BA+cont:544965971&cl=1&tn=newstitle&rn=30><font color=#008000 size=1>2条相同新闻&gt;&gt;</a></font><br></span><br><span>&#8226;&nbsp;<a href=http://www.cnr.cn/allnews/201110/t20111024_508671395.html  mon="a=5&pn=11"  target=_blank>北京最好的<font color="#C60A00">甲亢</font>医院专家谈:<font color="#C60A00">甲亢</font>的早期症状有哪些呢</a>&nbsp;<font class=g size=1>中国广播网 2011-10-24 11:12</font>&nbsp;<a href=/ns?word=%BC%D7%BF%BA+cont:2563865815&cl=1&tn=newstitle&rn=30><font color=#008000 size=1>3条相同新闻&gt;&gt;</a>而现在的结果 吧<a href=/ns?word=%BC%D7%BF%BA+cont:2563865815&cl=1&tn=newstitle&rn=30><font color=#008000 size=1>3条相同新闻&gt;&gt;</a>也取出来了<a href=/ns?word=%BC%D7%BF%BA+cont:2563865815&cl=1&tn=newstitle&rn=30> 后面没有mon= String url = Find(html,"href=(.*?)mon",1)我的正则 为什么没有mon= 也取到了呢
      

  6.   

           
        public String Find(String html, String regex, int g) {
            Pattern p = Pattern.compile(regex, Pattern.DOTALL);
            Matcher m = p.matcher(html);
            StringBuilder sb = new StringBuilder();
            while (m.find()) {
                String tmp = g == 0 ? m.group() : m.group(g);
                sb.append(tmp.trim()).append("\n");
            }
            return sb.length() == 0 ? html : sb.toString();
        }    String weburl = Find(html,"href=(.*?)mon",0);
        System.out.println (weburl);提取到的结果href=http://www.haodf.com/zhuanjiaguandian/chenxiaoly_537863636.htm  mon
    href=http://www.haodf.com/zhuanjiaguandian/ahyutang_539056072.htm  mon
    href=http://www.cnr.cn/allnews/201110/t20111024_508671392.html  mon
    href=/ns?word=%BC%D7%BF%BA+cont:544965971&cl=1&tn=newstitle&rn=30><font color=#008000 size=1>2条相同新闻&gt;&gt;</a></font><br></span><br>
    <span>&#8226;&nbsp;<a href=http://www.cnr.cn/allnews/201110/t20111024_508671395.html  mon
    href=/ns?word=%BC%D7%BF%BA+cont:2563865815&cl=1&tn=newstitle&rn=30><font color=#008000 size=1>3条相同新闻&gt;&gt;</a></font><br></span>
    <span>&#8226;&nbsp;<a href=http://roll.sohu.com/20111024/n323194212.shtml  mon
    href=http://news.beelink.com.cn/20111024/2833748.shtml  mon为什么没有 mon的也提取出来了呢?
      

  7.   


    试了,不怎么好使
    我是做采集,原字符串 不只有一个 a 连接
    每个a 连接都不一样
    href=http://www.cnr.cn/allnews/201110/t20111024_508671392.html  mon
    我只提取这种记录用了你的
    提取出来的结果href=http://www.cnr.cn/allnews/201110/t20111024_508671392.html  mon
    href=/ns?word=%BC%D7%BF%BA+cont:544965971&cl=1&tn=newstitle&rn=30><font color=#008000 size=1>2条相同新闻&gt;&gt;</a></font><br></span><br>
    <span>&#8226;&nbsp;<a href=http://www.cnr.cn/allnews/201110/t20111024_508671395.html  mon
    href=/ns?word=%BC%D7%BF%BA+cont:2563865815&cl=1&tn=newstitle&rn=30><font color=#008000 size=1>3条相同新闻&gt;&gt;</a></font><br></span>
    <span>&#8226;&nbsp;<a href=http://roll.sohu.com/20111024/n323194212.shtml  mon
    href=http://news.beelink.com.cn/20111024/2833748.shtml  mon没有mon 的也提取出来了