[英]Why doesn't this Java regex compile?
我試圖從以下任何格式的字符串中提取傳遞號碼:
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})")
編譯,但沒有匹配任何東西。 可能是什么問題呢?
而不是通過[I]?[D]?_([\\ d] {2,3})試試這個:
Pass(?:I)?(?:D)?_([\d]{2,3})
沒有什么無效您的tegex的,但它吮吸。 您不需要圍繞單個字符術語的字符類。 嘗試這個:
"Pass(?:ID)?_(\\d{2,3})"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.