gpt4 book ai didi

java - 在 Java 中获取所有捕获的组

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:38:12 26 4
gpt4 key购买 nike

我想匹配括号内的单个单词(包括括号),我下面的 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++;
}
}

Ideone Demo

关于java - 在 Java 中获取所有捕获的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36943806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com