我教授基于 Java 的高級計算機科學課程,我們主要使用 Eclipse IDE。我最近有一個作業,學生們在 Java 中探索了正則運算式,并遇到了一個問題,即錯誤形成的轉義序列實際上在 Eclipse 中傳遞,但在我的測驗自動化中運行時 Java 編譯失敗。這是一個應該失敗但在 eclipse 上不會失敗的正則運算式示例:
in = in.replaceAll(" ([^\s]*([^0-9\\ |\\-|\\/|\\(|\\)|\\*|\\.|\\s] |[^0-9]\\.|\\.[^0-9])[^\s]*) "," Error:$1" separator " ");
在 Eclipse 之外編譯時,此代碼無法正確編譯并顯示以下錯誤訊息:
RegularExpressions.java:60: error: illegal escape character
in = in.replaceAll(" ([^\s]*([^0-9\\ |\\-|\\/|\\(|\\)|\\*|\\.|\\s] |[^0-9]\\.|\\.[^0-9])[^\s]*) "," Error:$1" separator " ");
^
我一直無法弄清楚為什么 eclipse 會忽略這個問題。我假設某處有一些設定需要更新,但我還沒有找到。當他們的代碼“對他們有用”但我的測驗失敗時,這對學生來說尤其令人沮喪。
任何幫助將不勝感激。
uj5u.com熱心網友回復:
\s是 Java 15 及更高版本(JLS §3.10.7)中空間的有效 Java 轉義符
Eclipse 中存在一個錯誤,請參閱此處,\s當語言級別小于 15 時,該錯誤會被接受。這將在 2021-12 (4.22) 中修復
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/324394.html
上一篇:x--導致if無限回圈
