要从一个包含b[][],l[],r[]的字符串中截取出这三个串。
例:
“有一个b[yan\]g][d\[an]的r[y\[ou]句子中窃取出l[she]”
匹配的结果应该是b[yan\]g][d\[an],r[y\[ou],l[she]
重点在于,在截取的串的[]里面可以存在以“\]”和“\[”形式存在的串,但不能有单个的“[”,“]”存在。望各位前辈指点。

解决方案 »

  1.   

    这个需求满特殊的,不知道为什么设置这样的格式
    package com.saturday.asm;import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class MyRegExp {
    public static void main(String[] args){
    String sInput="有一个b[yan\\]g][d\\[an]的r[y\\[ou]句子中窃取出l[she]";
    String sReg="\\w+(\\["
           +"([^\\[\\]]|(?<=\\\\)[\\[\\]])*"
           +"\\])+";
    Pattern p=Pattern.compile(sReg);
    Matcher m=p.matcher(sInput);

    while(m.find()){
    System.out.println(m.group());
    }
    }
    }
      

  2.   

    xingqiliudehuanghun果然是高手啊,是在做一个信息翻译的东西,把一条原始信息经过规则匹配后得到规则对应的模板,然后把原始信息按模板翻译过来。感激不尽。