字符串www.aa.com/bb/content1/xxx.com
           www.aa.com/bb/content2/slakdfjsdkf.com我想提取的是bb后面的内容:content1 content2,即bb的"/"“/”中间夹着的内容。
这个怎么办呢

解决方案 »

  1.   

        public static void main(String[] args)
        {
            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);
        }
      

  2.   


    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"));
    }  
    }
      

  3.   

    但是如果是这样的呢www.aaa.com/sadfsadf/bb/content/xx.com
    就是只知道最终要找的是bb后面的那个/,但是不确定bb在哪个位置
      

  4.   

    有两点不太明白:
    1. str.replaceAll(".*bb/(.*?)/.*","$1")
    (.*?) 因为*就是0次到多次了,为什么后面还要加一个?2. $1是做什么用的呢?
      

  5.   

    如果是要提取dd或者mm后面的内容该怎么改这个正则表达式呢?
    比如www.sadfs/bb/content/.com
       www.sdfsad/mm/content/com
      

  6.   

    1. *默认是贪婪匹配,*?表示非贪婪匹配,去掉看看效果就知道了
    2.$1是捕获组,就是前面()里面的内容下面这个教程是火龙果大侠翻译的,非常适合入门:
    http://topic.csdn.net/u/20080306/17/f37a1818-3968-49b4-8f79-e5564486d63e.html
      

  7.   


    System.out.println(str.replaceAll(".*(?:bb|mm)/(.*?)/.*","$1"));
      

  8.   


    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));
    }
      

  9.   

    现在遇到一个问题,就是说
    www.aa.com/bb/content
    www.aa.com/bb/content2/sadf
    如果使用了str.replaceAll(".*bb/(.*?)/.*","$1",那么第一个url里面的content就提取不出来了
      

  10.   


    System.out.println(str.replaceAll(".*bb/([^/]*).*","$1"));
      

  11.   

    谢谢你啦。
    我想问一下:^/是指不包含/吗?
    那么使用.*bb/(.*).* 提取www.aa.com/bb/content2/sadf 得到content2/sadf,^/就会自动将/sadf去掉吗?
      

  12.   


    System.out.println(str.replaceAll(".*(?:bb|mm)/(.*?)(?:/.*|$)","$1"));
      

  13.   

    这么简单的东西要这么复杂吗? Pattern p = Pattern.compile("bb/(.*?)/");
    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));
    }
      

  14.   


    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));
      

  15.   


     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));
     }
      

  16.   


    Pattern p = Pattern.compile("(?!/)([^/]*)/[^/]*$");
    Matcher m = p.matcher("aaaaaaaaaaa/abc/bgc/test.com");
    m.find();
    System.out.println(m.group(1));