gpt4 book ai didi

java - Java 中的正则表达式——只返回最后一个匹配项

转载 作者:行者123 更新时间:2023-11-29 06:28:43 24 4
gpt4 key购买 nike

下面的代码片段应该返回匹配项并将其存储在 ArrayList 中,但出于某种原因,我只获得了最后一个匹配项,即 23;我当然希望 25623。你能告诉我我做错了什么吗?提前致谢。

public static void main(String[] args){

String target = "nawaK256he23llo";
String regexNb = "[0-9]+";

Pattern patternNb = Pattern.compile(regexNb);
Matcher mNb = patternNb.matcher(target);

List<String> allMatchesNb = new ArrayList<String>();

while (mNb.find()) {
System.out.println("mNb matched : " + mNb.find());
allMatchesNb.add(mNb.group());
for (String nb : allMatchesNb) {
System.out.println("content of ArrayList :" + nb);
}
}

}

输出如下:

content of ArrayList : 23

最佳答案

为了避免这个问题,并且不改变代码的逻辑,你可以使用:

boolean find = false;//create a variable so you can use in the loo^p
while (find = mNb.find()) {
// ^-------------------Initialize the variable
System.out.println("mNb matched : " + find);
//------------------------------------------^^

注意

It should be one equal = in find = mNb.find() not two, this is not a condition it is an initialization, so you can use it in System.out.println("mNb matched : " + find);

关于java - Java 中的正则表达式——只返回最后一个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44324829/

24 4 0
文章推荐: java - 使用 java 流将 Stream 转换为 List