在正则表达式(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()