字符串www.aa.com/bb/content1/xxx.com
www.aa.com/bb/content2/slakdfjsdkf.com我想提取的是bb后面的内容:content1 content2,即bb的"/"“/”中间夹着的内容。
这个怎么办呢
www.aa.com/bb/content2/slakdfjsdkf.com我想提取的是bb后面的内容:content1 content2,即bb的"/"“/”中间夹着的内容。
这个怎么办呢
{
String str = "www.aa.com/bb/content2/slakdfjsdkf.com";
str = str.substring(0, str.lastIndexOf("/"));
System.out.println(str);
str = str.substring(str.lastIndexOf("/") + 1);
System.out.println(str);
}
public static void main(String[] args) {
String arr[] = new String[]{
"www.aa.com/bb/content1/xxx.com",
"www.aa.com/bb/content2/slakdfjsdkf.com"
};
for(int i=0;i<arr.length;i++){
String str = arr[i];
System.out.println(str.replaceAll(".*bb/(.*?)/.*","$1"));
}
}
就是只知道最终要找的是bb后面的那个/,但是不确定bb在哪个位置
1. str.replaceAll(".*bb/(.*?)/.*","$1")
(.*?) 因为*就是0次到多次了,为什么后面还要加一个?2. $1是做什么用的呢?
比如www.sadfs/bb/content/.com
www.sdfsad/mm/content/com
2.$1是捕获组,就是前面()里面的内容下面这个教程是火龙果大侠翻译的,非常适合入门:
http://topic.csdn.net/u/20080306/17/f37a1818-3968-49b4-8f79-e5564486d63e.html
System.out.println(str.replaceAll(".*(?:bb|mm)/(.*?)/.*","$1"));
String[] sourceStrings = {
"www.aa.com/bb/content1/xxx.com",
"www.aa.com/bb/content2/slakdfjsdkf.com",
"www.sadfs/bb/content/com",
"www.sdfsad/mm/content/com" };
String regex = "^www\\.[\\w.]+?/[\\w]{2}/(.+?)/.*com$";//这里只有提取功能,还无法进行验证
for (String sourceString : sourceStrings) {
Matcher matcher = Pattern.compile(regex).matcher(sourceString);//
if (matcher.matches())
System.out.println(matcher.group(1));
}
www.aa.com/bb/content
www.aa.com/bb/content2/sadf
如果使用了str.replaceAll(".*bb/(.*?)/.*","$1",那么第一个url里面的content就提取不出来了
System.out.println(str.replaceAll(".*bb/([^/]*).*","$1"));
我想问一下:^/是指不包含/吗?
那么使用.*bb/(.*).* 提取www.aa.com/bb/content2/sadf 得到content2/sadf,^/就会自动将/sadf去掉吗?
System.out.println(str.replaceAll(".*(?:bb|mm)/(.*?)(?:/.*|$)","$1"));
Matcher m = p.matcher("www.aa.com/bb/content1/xxx.com www.aa.com/bb/content2/slakdfjsdkf.com");
while(m.find()){
System.out.println(m.group(1));
}
String input = "www.aa.com/bb/content1/xxx.com";
Pattern p = Pattern.compile("/(\\w+)/[\\w.]*$");
Matcher m = p.matcher(input);
m.find();
System.out.println(m.group(1));
String str = "www.aa.com/bb/casdfsfsfsaontent2/slakdfjsdkf.com";
Pattern p = Pattern.compile(".*bb/(.*)/.*");
Matcher m =p.matcher(str);
while(m.find()){
System.out.println(m.group(1));
}
Pattern p = Pattern.compile("(?!/)([^/]*)/[^/]*$");
Matcher m = p.matcher("aaaaaaaaaaa/abc/bgc/test.com");
m.find();
System.out.println(m.group(1));