類內部我有一個模式private Pattern lossWer = Pattern.compile("^\\d+ \\d+ (\\d+).*")
。其中一個功能如下所示:Java正則表達式僅在匹配檢查時匹配
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;
}
當然,我的應用程序不只是使用空白分號該行,但我說明的是,這裏行什麼也不做,但允許該程序無誤地繼續。爲什麼在第二個例子中行匹配沒有錯誤,但在第一個例子中沒有錯誤?