我試圖從任一下列格式字符串通號:這個Java正則表達式爲什麼不編譯?
PassID_132
PassID_64
Pass_298
Pass_16
對於這一點,我構建了以下的正則表達式:
Pass[I]?[D]?_([\d]{2,3})
- 和在Eclipse中的搜索對話框進行了測試。它運行良好。
但是,當我在代碼中使用它時,它不匹配任何東西。這裏是我的代碼片段:
String idString = filename.replaceAll("Pass[I]?[D]?_([\\d]{2,3})", "$1");
int result = Integer.parseInt(idString);
我也試過
java.util.regex.Pattern.compile("Pass[I]?[D]?_([\\d]{2,3})")
在
表達式
窗口在調試時,卻寫着 「」,而
java.util.regex.Pattern.compile("Pass[I]?[D]?_([0-9]{2,3})")
編譯,但是沒」不匹配任何東西。可能是什麼問題呢? ?
「\\ d」已經擴展爲「[0-9]」了,不要把它放在括號裏!您也可以將單個字母(如「I」或「D」)的括號轉儲。嘗試「通過(?:ID)?_(\\ d {2,3})」 – AKDADEVIL