gpt4 book ai didi

java - 循环遍历正则表达式中的一组(Java)

转载 作者:行者123 更新时间:2023-11-30 04:36:58 38 4
gpt4 key购买 nike

我有一个正则表达式,其中包含类似 ([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 字符串。但是,当捕获大括号位于重复范围内时(例如 +),只能检索最后捕获的值,因此 group(1) 返回 d .

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

关于java - 循环遍历正则表达式中的一组(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13256322/

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