0

我一直在做一个周末项目,一个简单、轻量级的 XML 解析器,只是为了好玩,以了解更多关于 Regex 的信息。我已经能够获取属性和元素中的数据,但是很难分离标签。这就是我所拥有的:

    CharSequence inputStr = "<a>test</a>abc<b1>test2</b1>abc1";
    String patternStr = openTag+"(.*?)"+closeTag;

    Pattern pattern = Pattern.compile(patternStr);
    Matcher matcher = pattern.matcher(inputStr);

    StringBuffer buf = new StringBuffer();
    boolean found = false;
    while ((found = matcher.find())) {
      String replaceStr = matcher.group();
      matcher.appendReplacement(buf, "found tag (" + replaceStr + ")");
    }
    matcher.appendTail(buf);

    String result = buf.toString();
    System.out.println(result);


Output: found tag (<a>test</a>abc<b1>test2</b1>)abc1

我需要在每个标签处结束“找到的标签”,而不是整个组。有什么办法可以让它做到这一点?谢谢。

4

1 回答 1

0

您可以尝试以下方法以使其按需要工作;

int count = matcher.groupCount();
            for(int i=0;i<count;i++)
            {
                 String replaceStr = matcher.group(i);
                  matcher.appendReplacement(buf, "found tag (" + replaceStr + ")");     
            }
于 2012-11-19T00:52:18.080 回答