java.util.regex.Matcher组
我很难找到正则表达式匹配的正确组。我的代码可以归结为以下几点:java.util.regex.Matcher组,java,regex,matcher,regex-group,Java,Regex,Matcher,Regex Group,我很难找到正则表达式匹配的正确组。我的代码可以归结为以下几点: Pattern fileNamePattern = Pattern.compile("\\w+_\\w+_\\w+_(\\w+)_(\\d*_\\d*)\\.xml"); Matcher fileNameMatcher = fileNamePattern.matcher("test_test_test_test_20110101_0000.xml"); System.out.println(fileNameMatcher.grou
Pattern fileNamePattern = Pattern.compile("\\w+_\\w+_\\w+_(\\w+)_(\\d*_\\d*)\\.xml");
Matcher fileNameMatcher = fileNamePattern.matcher("test_test_test_test_20110101_0000.xml");
System.out.println(fileNameMatcher.groupCount());
if (fileNameMatcher.matches()) {
for (int i = 0; i < fileNameMatcher.groupCount(); ++i) {
System.out.println(fileNameMatcher.group(i));
}
}
然而,它:
2
test_test_test_test_20110101_0000.xml
test
有人有解释吗?第0组是整场比赛。真正的组从1开始,即您需要:
System.out.println(fileNameMatcher.group(i + 1));
第0组是整场比赛。真正的组从1开始,即您需要:
System.out.println(fileNameMatcher.group(i + 1));
应该是整个匹配(“test\u test\u test\u test\u 20110101\u 0000.xml”)李>组(0)
应该是正则表达式中唯一的捕获组(“20110101_0000”)组(1)
组(1)
应该是整个匹配(“test\u test\u test\u test\u 20110101\u 0000.xml”)李>组(0)
应该是正则表达式中唯一的捕获组(“20110101_0000”)组(1)
为什么您希望“测试”包含在您的组中?您没有定义要匹配测试的组(您的正则表达式只包含组\d*\ud*)。组(0)是整个匹配,组(1),组(2)。。。是正则表达式匹配的子组。
为什么您希望“测试”包含在您的组中?你没有定义一个组来匹配测试(你的正则表达式只包含组\d*\ud*)。实际上你的for循环应该包括groupCount(),使用“实际上你的for循环应该包括groupCount(),使用“Thank I got now:”)很抱歉我在代码中忘记了一些括号,请看我的编辑。谢谢我现在收到了:)很抱歉我的代码中忘记了一些括号,请看我的编辑。非常感谢!没有意识到默认行为。非常感谢!没有意识到默认行为。非常感谢!我没有意识到默认行为。是的,我的代码中缺少了一对括号,只是为了正确性编辑了它。非常感谢!是的,我的代码中遗漏了一对括号,只是为了正确性而编辑了它。
for (int i = 0; i <= fileNameMatcher.groupCount(); ++i) {
System.out.println(fileNameMatcher.group(i));
}
2
test_test_test_test_20110101_0000.xml
test
20110101_0000