从字符串中,我需要提取与给定模式匹配的组。
示例字符串:<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/