我想在任何字符串里查找"${任意字符串}"
比如字符串,"bbsadsasamkkj${x}.date"
或者字符串"ttattta${sdadsada}.date"
通过正则表达式,可以查找是否含有"${x}"或者"{sdadsada}"
x和sdadsada为任意字符串。
请问正则表达式该怎么写?
还有我在Pattern p=Pattern.compile("${}");这条语句时,抛出java.util.regex.PatternSyntaxException异常。为什么?

解决方案 »

  1.   

    try...String pattern = "\\$\\{[^{}]*\\)";
      

  2.   


    String[] array={"bbsadsasamkkj${x}.date","ttattta${sdadsada}.date"};
    String regex="\\$\\{[^{}]*\\}";
    Pattern p=Pattern.compile(regex);
    Matcher m=null;
    for(String str:array){
    m=p.matcher(str);
    while(m.find()){
    System.out.println(m.group());
    }
    }
      

  3.   

    public static void main(String[] args) {
    String s1 = "bbsadsasamkkj${x}.date";
    String regex = "(^.*(\\$(\\{.+?\\})).*$)";
    System.out.println(s1.replaceAll(regex, "$2"));// ${x}
    System.out.println(s1.replaceAll(regex, "$3"));// {x}
    }
      

  4.   

    这里API和源码例子
    一个英文的,一个翻译的:
    http://apicode.gicp.net/class.do?api=selectByfatherIndex&father=255
    http://apicodecn.gicp.net/class.do?api=selectByfatherIndex&father=255