我試圖在Java中使用正則表達式在字符串中查找時間。這裏的正則表達式:在Java中使用正則表達式查找12小時格式的時間
\d{1,2}?:\d\d(?)(am|pm)??
這應該尋找1位或2位,後跟一個冒號,兩個數字,然後要麼「是」或「PM」(大小寫無關)。
它主要工作,但如果我在捕獲組中包裝整個正則表達式,我只會得到hh:mm。例如,「12:34 am」只返回「12:34」。沒有「是」。
UPDATE:完整的代碼示例
Pattern p = Pattern.compile("\\d{1,2}?:\\d\\d(?)(am|pm)??");
Matcher matcher = p.matcher("12:34AM");
Assert.assertTrue(matcher.find());
Assert.assertEquals("12:34AM", matcher.group());
任何人有任何想法,爲什麼?
您正在尋找在錯誤的組。嘗試組0.下次,請發佈[mcve],而不僅僅是您認爲相關的位。猜你在做什麼不是最佳 – Tibrogargan
爲什麼有這麼多的問號?我是否錯過了某些東西,或者這應該是'\ d {1,2}?:\ d \ d(am | pm)',或者am/pm是可選的\ d {1,2}:\ d \ d(am | pm)?' – 3ocene
@ 3ocene我不認爲這是一個有效的正則表達式,因爲它是無論如何。什麼是「(?)」? – Tibrogargan