gpt4 book ai didi

Java 正则表达式仅在选中匹配时才匹配

转载 作者:行者123 更新时间:2023-11-29 10:20:35 25 4
gpt4 key购买 nike

在一个类中,我有一个模式 private Pattern lossWer = Pattern.compile("^\\d+\\d+ (\\d+).*")。其中一个函数如下所示:

public double[] getWer(){
double[] wer = new double[someStrings.size()];
Matcher m;
for(int i = 0; i < wer.length; i++){
m = lossWer.matcher(someStrings.get(i));
wer[i] = Double.parseDouble(m.group(1));
}
return wer;
}

调用失败并返回 java.lang.IllegalStateException: No match found。但是,当我将其更改为此时,它起作用了:

public double[] getWer(){
double[] wer = new double[someStrings.size()];
Matcher m;
for(int i = 0; i < wer.length; i++){
m = lossWer.matcher(someStrings.get(i));
if(!m.matches())
;
wer[i] = Double.parseDouble(m.group(1));
}
return wer;
}

当然,我的应用程序不只是对该行使用空白分号,但我要说明的是,此处的行除了允许程序无误地继续执行之外什么都不做。为什么第二个例子中的行匹配没有错误,而第一个例子中却没有?

最佳答案

您不能使用 group()无需先调用 find()matches() .这就是正则表达式的工作方式。首先你创建一个模式,然后是一个匹配器,然后你要么找到()正则表达式的实例,要么检查它是否匹配()。

关于Java 正则表达式仅在选中匹配时才匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7035013/

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