有这样一个内容<root>.*</root><root>.*</root><root>.*</root>,
我想匹配每一个<root>.*</root>出来

解决方案 »

  1.   

    String[] strs = str.split("(?=<root>)(?<=</root>)");
      

  2.   

    String regEx = "(<Root> </Root>)";
    Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(tempStr);
    while (m.find()) {
    String ss = m.group();
    System.out.println("正则匹配" + ss);
                     }
    楼上的方法不行啊 我想这么用
      

  3.   

    是这样的:
    "<Root>(.*)</Root>"
    你试试看。--------------------
    我设计的Koodoo语言:
    http://www.bluespace.com.cn/koodoo/pdf/koodooref.chm
      

  4.   

    bluesen(善哉)
    我一开始就是这么做的"<Root(.*)</Root>"不能有这边的尖括号 
    哈哈 这样好象可以<Root(.*?)</Root>
      

  5.   

    对,你后面加上问号是对的,那叫“非贪婪模式”,不过尖括号还是要吧:
    "<Root>(.*?)</Root>"  --非贪婪模式,匹配到一个就停止
    "<Root>(.*)</Root>"  --贪婪模式,最大范围地匹配到,比如匹配到最后我用Koodoo脚本语言写了一段:
    s = "<Root>hello world.</Root><Root>你好, 中国!</Root>";
    patt = "<Root>(.*?)</Root>";i = 0;
    while(true)
    {
       m = 0;
       found = Ereg(s, i, patt, m);
       if( !found )
          break;   Print(m[1]+"\n");   l = Len(m[0], 0);
       i = i + l;
    }显示结果是:
    hello world.
    你好, 中国!Java我外行,应该类似吧。--------------------
    我设计的Koodoo语言:
    http://www.bluespace.com.cn/koodoo/pdf/koodooref.chm