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

看板RegExp (正規表示式 Regular Expression)作者 (璽佧)時間13年前 (2012/05/09 17:19), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串1/2 (看更多)
輸入的字串是這個樣子,目的是要分別取出括號如(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嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.134.26.80

05/09 17:57, , 1F
你誤解了 split 的用途了 他是指以指定 pattern 做分隔去切
05/09 17:57, 1F

05/09 17:57, , 2F
所以你得到的是原網頁的 [0] [2] [4] [6] 這四段
05/09 17:57, 2F

05/09 17:57, , 3F
[1] [3] [5] 這些符合 pattern 的被當做分隔線了
05/09 17:57, 3F

05/09 17:59, , 4F
你應該要用 p.matcher(input_string); 取出 Matcher
05/09 17:59, 4F

05/09 17:59, , 5F
再由這個 Matcher 抓出每一段字串出來
05/09 17:59, 5F

05/09 18:43, , 6F
我懂了@@ 感謝LPH66
05/09 18:43, 6F
文章代碼(AID): #1FgZQFvC (RegExp)
文章代碼(AID): #1FgZQFvC (RegExp)