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

标签 java regex

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

相关文章:

php - 在正则表达式中包含大写和非大写字母

javascript - 正则表达式匹配是否包含彼此相邻的相同字符 0 或 2 或 4 次

java - 在android中的firestore中创建一个自定义文档id,而不是生成随机的

java - E/Volley : com. android.volley.ParseError : org. json.JSONException:值{"results":[{

java - JUnit 断言抛出中的可执行文件会发生什么情况?

python - 特定字符后的多个正则表达式条件

Java正则表达式在字符串中查找符号

java - 使用通用自定义类时出现 ClassCastException

java - Android Toast消息显示

python - 从python中的文本输出扩展的ip列表