从字符串中,我需要拉出与给定模式匹配的组.
示例字符串: <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>.我期待第一组和第二组,但那些没有被捕获.有人可以帮忙吗?
当你应该迭代匹配时,你正在遍历组.该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)
| 归档时间: |
|
| 查看次数: |
3832 次 |
| 最近记录: |