簡體   English   中英

為什么這個Java正則表達式不能編譯?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM