[問題] 字串多個括號分割

作者: blueshika (藍藍鹿)   2012-05-09 17:18:52
輸入的字串是這個樣子,目的是要分別取出括號如(aaa,aaa,123)
test((aaa,aaa,123)(bbb,bbbb)(ccc,cc,7891)...)
我自己寫了如下的規則
(\([a-z]+\,[a-z]+\,*\d*\))
我在這個網頁測試http://osteele.com/tools/rework/
結果如下
results[0] = "test("
results[1] = "(aaa,aaa,111)"
results[2] = empty string
results[3] = "(bbb,bbbb)"
results[4] = empty string
results[5] = "(ccc,cc)"
results[6] = ")"
可是我把規則寫在java裡面執行
private static String regex = "(\\([a-z]+\\,[a-z]+\\,*\\d*\\))";
Pattern p = Pattern.compile(regex);
String[] array = p.split(input_string);
結果卻是
第0個:test(
第1個:
第2個:
第3個:)
請問是哪裡出錯??
還有我一開始的規則這樣寫OK嗎?
作者: LPH66 (-6.2598534e+18f)   2012-05-09 17:57:00
你誤解了 split 的用途了 他是指以指定 pattern 做分隔去切所以你得到的是原網頁的 [0] [2] [4] [6] 這四段[1] [3] [5] 這些符合 pattern 的被當做分隔線了你應該要用 p.matcher(input_string); 取出 Matcher再由這個 Matcher 抓出每一段字串出來
作者: blueshika (藍藍鹿)   2012-05-09 18:43:00
我懂了@@ 感謝LPH66

Links booklink

Contact Us: admin [ a t ] ucptt.com