想处得尖括号中的字符内容,比如:
如果字符串是xx<123>xx,希望得出123
如果字符串是xx<123<321>0>xx,希望得出123<321>0
如果字符串是xx<123<321><456>0>xx,希望得出123<321><456>0
如果字符串是xx<XX<1<2>1>XX>xx,希望得出XX<1<2>1>XX尖括号中里的尖括号可能是无尽嵌套的,希望路过的高人给个关于java的正则表达式。

解决方案 »

  1.   


    其实不用正则表达式效率更高。
         String s="xx <XX <1 <2>1>XX>xx";
         System.out.println(s.substring(s.indexOf("<")+1, s.lastIndexOf(">")));
         Matcher m=Pattern.compile(".*?<(.+)>").matcher(s);
         while(m.find())
         System.out.println(m.group(1));
      

  2.   

    做不到目前正则表达式能支持到这种嵌套结构的程序语言只有 Perl 和 .NET
      

  3.   


    大哥,我的意思不是先借助java语句来改变想要匹配的字符串后再匹配,而是直接用正则表达式来匹配搜索。
    比如“xx <XX <1 <2>1>XX>xx”字符串直接用Matcher的m.find()找个相匹配的串,然后用group()输出。而不是把“xx <XX <1 <2>1>XX>xx”字符串sbuString成“XX <1 <2>1>XX”再匹配。
    我举个例子,比如“XXX<123<ab>>XXX<321>XX”字符串应该匹配成“123<ab>”和“321”串,如果用subString的话就更本解决不了问题了。
    请知道怎么写真接写表达式匹配的朋友帮下忙。
      

  4.   

    这类的正则表达式难道用java真的无法实现?
      

  5.   

    如果知道最大的嵌套层次,可以实现,如果嵌套层次是不定的,Java 中的正则表达式做不到。建议自己写字符串解析实现
      

  6.   

    刀奈特我是不懂
    Perl能够支持的也是指定数量N个嵌套匹配
      

  7.   

    俺最近学习了正则表达式。对于你的问题,就先用subString来去字符串。不会用,先去API里看String的方法!再用你很希望的正则表达式就可以了!还不会就联系我喽!
      

  8.   

    p = Pattern.compile("\\<.*\\>", Pattern.MULTILINE | Pattern.DOTALL | Pattern.CASE_INSENSITIVE);