源字符串: [ss:test]
目标字符串:test
如何通过正则表达式取出[ss:??]问号代表的词?

解决方案 »

  1.   


    // 一
    String str = "[ss:test]";
    String[] s = str.replaceAll("\\[ss:(.*?)\\]","$1").split(",");
    System.out.println(s[0]); // 二
    Matcher matcher = Pattern.compile("(?<=\\[ss:).*?(?=\\])").matcher(str);
    if(matcher.find())
    System.out.println(matcher.group());

      

  2.   

    System.out.println("[ss:test]".substring(4, s.length()-1));
      

  3.   


    public static void main(String[] args) {
    // 一
    String str[] = {"[ss:test]" ,"[aa:321]" ,"[bb:llln]" ,"[ui:321s]" ,"[lljfds:111]"  };
    for (String string : str) {
    String[] s = string.replaceAll("\\[.*?:(.*?)\\]","$1").split(",");
    System.out.println(s[0]);
    }

    System.out.println();

    // 二
    for (String string : str) { //如果 前面字符不超过10位 ,才可以这样用。有局限性 。 但是又必须给他指定一个最大长度
    Matcher matcher = Pattern.compile("(?<=\\[.{0,10}:).*?(?=\\])").matcher(string);
    if(matcher.find())
    System.out.println(matcher.group());
    }

    System.out.println();
    // 三   用这种 方式  , 更好
    for (String string : str) {
    Matcher matcher = Pattern.compile("(\\[.*?:)(.*?)(\\])").matcher(string);
    if(matcher.find())
    System.out.println(matcher.group(2));
    }

    }  
      

  4.   

    直接substr好了,干嘛费那么大劲正则呀?
    str.substring(str.indexOf(":"), str.length() - 1);
      

  5.   

    失误应该是这样的。
    str.substring(str.indexOf(":") + 1, str.length() - 1);
      

  6.   


    String str="[asdf:aaa]";
    System.out.println(str.replaceAll("(?<=\\[.{1,99}:)(.+)(?=\\])", "asdf"));
      

  7.   


    public static void main(String[] args) {
    String str = "[ss:test]";
    str = str.replaceAll("\\[.*?:(.*?)\\]","$1");
    System.out.println(str);
    }
      

  8.   

    搞错了,不是替换
    String str="[asdf:aaa]";
    System.out.println(str.replaceAll("(?:\\[.+:)(.+)(?:\\])", "$1"));
      

  9.   

    也许你的办法确实不错,不过我没有你用的Pattern和Matcher 2个工具类,所以用不了你说的方式,
    方案2我试过了 可惜还是不能正确匹配,至于第一个也不行 ,因为这个“$1” 在我用的语言里面是原样替换的
      

  10.   

    还有一种情况是:
    源字符串:[ss:test]dwdwadwadwa
    目标字符串:test
    这种也需要成功匹配。
      

  11.   


    public class zjbds {
    public static void main(String[] args){
    System.out.println("[ss:test]dwdwadwadwa".replaceAll(".*:|].*", ""));
    System.out.println("[ss:test]".replaceAll(".*:|].*", ""));
    }
    }
      

  12.   

    因为这个“$1” 在我用的语言里面是原样替换的
    你的什么语言?任何支持正则的语言都有类似的语法。像js中的  \1 ,java 中的 $1
      

  13.   

    谢谢大家的指点,我的问题已经解决了。
    [code=ActionScript]
                            var reg2:RegExp = /\[.*?:(.*?)\]/i;
    var test:String = "[ss:test]dwdwadwadwa[ar:test1]";
    trace(reg2.exec(test)[1])
    [/code]