java.util.regex.Matcher混淆组
|
我在找正则表达式匹配的正确组时遇到了麻烦。我的代码归结为以下内容:
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
20110101_0000
但是它:
2
test_test_test_test_20110101_0000.xml
test
有人有解释吗?
没有找到相关结果
已邀请:
4 个回复
氮顺
吠强祷豪硅
募磷
应该是整个匹配项(\“ test_test_test_test_test_20110101_0000.xml \”);
应该是您的正则表达式(\“ 20110101_0000 \”)中的唯一捕获组。 这就是我得到的。我为你为什么要得到5英镑的不同价值而感到困惑。
茂坦湿床够
因此,您的输出将是:
groupCount()将不对与整个字符串匹配的组0进行计数。 第一组将是\“ test \”,由(\\ w +)和 第二组将是\“ 20110101_0000 \”,并由(\\ d * _ \\ d *)匹配