[问题] 字串多个括号分割

楼主: 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