无法将XML的正则表达式部分与java匹配

时间:2015-08-04 09:26:23

标签: java regex xml matcher

你好我在使用带有Java的正则表达式时遇到了问题。

我试图解析这个问题:

*whatever string*
<AttributeDesignator AttributeId="MyIDToParse"
DataType="http://www.w3.org/2001/XMLSchema#string"
Category="theCategoryIWantToParse"
MustBePresent="false"
/>
*whatever string that may contain the same regular expression*

使用此代码(Pattern + Matcher)

Pattern regex = Pattern.compile("AttributeDesignator +AttributeId=\"(.+)\" +.*Category=\"(.+)", Pattern.DOTALL);
Matcher matcher = regex.matcher(xml);
while (matcher.find()) {
    String ID = matcher.group(1);
    String Category = matcher.group(2);

输出如下:

第1组:

MyIDToParse"
    DataType="http://www.w3.org/2001/XMLSchema#string"
    Category="theCategoryIWantToParse"
    MustBePresent="false"
    />
    *whatever string that may contain the same regular expression*

group2:

theCategoryIWantToParse"
    MustBePresent="false"
    />
    *whatever string that may contain the same regular expression*

我觉得这很简单,但我无法找到我做错的事情。 当我在网站中使用正则表达式来测试它时,它可以正常工作并从我的xml条目中突出显示正确的表达式。

1 个答案:

答案 0 :(得分:2)

尝试使用非贪婪的正则表达式。

    Pattern regex = Pattern.compile("AttributeDesignator AttributeId=\"(.+?)\".*Category=\"(.+?)\"", Pattern.DOTALL);