Java - 使用组的Reg表达式

4 java regex

从字符串中,我需要拉出与给定模式匹配的组.

示例字符串: <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));
}
Run Code Online (Sandbox Code Playgroud)

输出是<XmlLrvs>Third</XmlLrvs>.我期待第一组和第二组,但那些没有被捕获.有人可以帮忙吗?

wax*_*ing 8

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

更改

matcher.matches();

for (int i = 1; i<=matcher.groupCount(); i++) {
    System.out.println(matcher.group(i));
}
Run Code Online (Sandbox Code Playgroud)

while (matcher.find()) {
    System.out.println(matcher.group(1));
}
Run Code Online (Sandbox Code Playgroud)

  • 我的意思是决赛+. (2认同)