我想匹配括号内的单个单词(包括括号),我下面的 Regex
可以正常工作,但它不会返回所有组。
这是我的代码:
String text = "This_is_a_[sample]_text[notworking]";
Matcher matcher = Pattern.compile("\\[([a-zA-Z_]+)\\]").matcher(text);
if (matcher.find()) {
for (int i = 0; i <= matcher.groupCount(); i++) {
System.out.println("------------------------------------");
System.out.println("Group " + i + ": " + matcher.group(i));
}
我还在 Regex Planet 中测试过它它似乎有效。
它必须返回 4 个组:
------------------------------------
Group 0: [sample]
------------------------------------
Group 1: sample
------------------------------------
Group 2: [notworking]
------------------------------------
Group 3: notworking
但它只返回它:
------------------------------------
Group 0: [sample]
------------------------------------
Group 1: sample
怎么了?
最佳答案
JAVA 不提供花哨的全局选项来一次查找所有匹配项。所以,你需要 while loop
这里
int i = 0;
while (matcher.find()) {
for (int j = 0; j <= matcher.groupCount(); j++) {
System.out.println("------------------------------------");
System.out.println("Group " + i + ": " + matcher.group(j));
i++;
}
}
关于java - 在 Java 中获取所有捕获的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36943806/