(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, 上面的字符串,请问如何抓取http路径?我做了一个
Pattern pattern = Pattern.compile("http:\\/\\/([\\w.]+\\/?)\\S*",Pattern.CASE_INSENSITIVE);
这样子,但是发现 他会把 ', 也抓取了2,如果我想控制中间的字符串 该如何做???
比如抓取只抓去 http:// --详详细细xx--- jpg 这样的字符串
如果当我希望抓gif改一下后缀,但是我不知道java中怎么控制
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);
}
}
String regex="http\\S+?(jpg)"
因为现在所要查找的地址都是以"http"开头,"jpg"结尾的,所以好办,先确定下来"httpXXXjpg".
接着查看下中间的字符串,网络地址能用到很多字符,但不允许有非空字符,所以选择了\S+由于正则
的量词总是贪婪的,如果我们不为它限定,那么它总是会贪婪下去,所以要写成\S+?使其勉强化。
至于修改匹配出来的字符串,因为都是jpg,所以我就偷懒了下。