从字符串中,我需要提取与给定模式匹配的组。

示例字符串:<XmlLrvs>FIRST</XmlLrvs><XmlLrvs>SECOND</XmlLrvs><XmlLrvs>Third</XmlLrvs>
每个组应以 <XmlLrvs> 开始并以 </XmlLrvs> 结束。这是我的代码片段...

String patternStr = "(<XmlLrvs>.+?</XmlLrvs>)+";

// Compile and use regular expression
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(text);
matcher.matches();

// Get all groups for this match
for (int i = 1; i<=matcher.groupCount(); i++) {
   System.out.println(matcher.group(i));
}

输出是 <XmlLrvs>Third</XmlLrvs> 。我期待第一组和第二组,但没有被捕获。任何人都可以提供帮助吗?

最佳答案

当您应该迭代匹配时,您正在迭代组。 matches() 方法检查整个输入是否匹配。你想要的是 find() 方法。

改变

matcher.matches();

for (int i = 1; i<=matcher.groupCount(); i++) {
    System.out.println(matcher.group(i));
}


while (matcher.find()) {
    System.out.println(matcher.group(1));
}

关于Java - 使用组的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1046409/

10-10 10:08