(1, 'http://www.skyto.com/200804/168_ivy086_569991.jpg', 'pretty', 'http://www.skyto.com/200804/168_ivy090_641323.jpg,http://www.skyto.com/200804/168_ivy085_725033.jpg,http://www.skyto.com/200804/168_ivy087_615907.jpg,http://www.skyto.com/200804/168_ivy088_587843.jpg,http://www.skyto.com/200804/168_ivy089_614175.jpg,', '2008-06-13 23:39:37')
1, 上面的字符串,请问如何抓取http路径?我做了一个
 Pattern pattern = Pattern.compile("http:\\/\\/([\\w.]+\\/?)\\S*",Pattern.CASE_INSENSITIVE);
这样子,但是发现 他会把  ',  也抓取了2,如果我想控制中间的字符串 该如何做???
比如抓取只抓去  http:// --详详细细xx---   jpg 这样的字符串
如果当我希望抓gif改一下后缀,但是我不知道java中怎么控制

解决方案 »

  1.   

    import java.util.*;
    import java.util.regex.*;
    import java.io.*;
    public class qdb
    {
    public static void method(String s,String regex)
    {
    Pattern p=Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
    Matcher m=p.matcher(s);
    while(m.find())
    {
    String ns=m.group().replaceAll("jpg","XXX");
    System.out.println(ns);
    }
    /*while(m.find())
    {
    System.out.println(m.group());
    }*/
    }
    public static void main(String[] args)
    {
    String s=", 'http://www.skyto.com/200804/168_ivy086_569991.jpg', 'pretty', 'http://www.skyto.com/200804/168_ivy090_641323.jpg,http://www.skyto.com/200804/168_ivy085_725033.jpg,http://www.skyto.com/200804/168_ivy087_615907.jpg,http://www.skyto.com/200804/168_ivy088_587843.jpg,http://www.skyto.com/200804/168_ivy089_614175.jpg,', '2008-06-13 23:39:37'";
    String regex="http\\S+?(jpg)";
    qdb.method(s, regex);
    }
    }
      

  2.   

    我也正则才学2天,所以写的有点乱~大概说下我的破程序哈
    String regex="http\\S+?(jpg)"
    因为现在所要查找的地址都是以"http"开头,"jpg"结尾的,所以好办,先确定下来"httpXXXjpg".
    接着查看下中间的字符串,网络地址能用到很多字符,但不允许有非空字符,所以选择了\S+由于正则
    的量词总是贪婪的,如果我们不为它限定,那么它总是会贪婪下去,所以要写成\S+?使其勉强化。
    至于修改匹配出来的字符串,因为都是jpg,所以我就偷懒了下。