Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在正则表达式(Java)中循环一个组_Java_Regex - Fatal编程技术网

在正则表达式(Java)中循环一个组

在正则表达式(Java)中循环一个组,java,regex,Java,Regex,我有一个正则表达式,其中包含类似于([a-Za-z]\s)+的内容。它返回一个包含所有字母和空格的组。但是,它只保留组中的最后一个元素,例如,如果文本包含a b c d,我试图打印组匹配项,但它只返回字母(d)。这是我的节目 while (m.find()) { L = m.group(1); System.out.println(L); } 我的问题是为什么我只得到字母(d)而不是所有的字母?是不是因为他们都是通过一个小组抓到的?我

我有一个正则表达式,其中包含类似于
([a-Za-z]\s)+
的内容。它返回一个包含所有字母和空格的组。但是,它只保留组中的最后一个元素,例如,如果文本包含
a b c d
,我试图打印组匹配项,但它只返回字母(d)。这是我的节目

while (m.find()) {
      L = m.group(1);
      System.out.println(L);
                  }

我的问题是为什么我只得到字母(d)而不是所有的字母?是不是因为他们都是通过一个小组抓到的?我该怎么纠正呢?我如何遍历一个组。例如,遍历作为一个组检测到的所有匹配?

正则表达式的问题是它匹配一个字符后跟一个空格的所有序列

在您的示例中,
group()
将返回整个
a b c d
字符串。但是,当捕获大括号在重复中时(如
+
),只能检索最后捕获的值,因此
组(1)
返回
d

要解决您的问题,只需从正则表达式中删除
+
。这将使
find()
多次成功,每次都会得到不同的匹配。在这种情况下,您甚至可以删除括号,只需使用
group()