看板 RegExp 關於我們 聯絡資訊
輸入的字串是這個樣子,目的是要分別取出括號如(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
LPH66:你誤解了 split 的用途了 他是指以指定 pattern 做分隔去切 05/09 17:57
LPH66:所以你得到的是原網頁的 [0] [2] [4] [6] 這四段 05/09 17:57
LPH66:[1] [3] [5] 這些符合 pattern 的被當做分隔線了 05/09 17:57
LPH66:你應該要用 p.matcher(input_string); 取出 Matcher 05/09 17:59
LPH66:再由這個 Matcher 抓出每一段字串出來 05/09 17:59
blueshika:我懂了@@ 感謝LPH66 05/09 18:43