我試圖讓下面的正則表達式來對我的字符串工作:獲得NULL值從Java正則表達式匹配器與發現的圖案
Pattern Regex = Pattern.compile("(?:(\\d+) ?(days?|d) *?)?(?:(\\d+) ?(hours?|h) *?)?(?:(\\d+) ?(minutes?|m) *?)?(?:(\\d+) ?(seconds?|s))?",
Pattern.CANON_EQ | Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
Matcher RegexMatcher = Regex.matcher(myString);
while (RegexMatcher.find()) {
...
}
..它基本上分裂樣1天3小時成字符串匹配的正則表達式組。
我遇到的問題是,當我進入while循環時,調用RegexMatcher.group(i)
將始終返回NULL
值,這意味着它們在字符串中找不到。
當我嘗試輸出RegexMatcher.group(0)
,它返回一個空字符串,即使myString
definitelly包含像"hello 1d"
- 這應該返回至少第一組爲"1"
而第二次作爲"d"
。
我檢查並檢查了正則表達式,它似乎沒問題。不知道這裏有什麼問題。
感謝:-)
我有一個懷疑,它涉及到非捕獲組。 – Corbin 2012-03-31 09:47:01
試圖刪除所有非捕獲組以及Pattern.CANON_EX,Pattern.UNICODE_CASE和Pattern.CASE_INSENSITIVE標誌,但無法使用 – 2012-03-31 09:55:30
也嘗試刪除非捕獲組內的捕獲組並完全刪除大的非捕獲組 - 那裏沒有快樂 – 2012-03-31 09:58:54