日期:2014-05-20  浏览次数:20615 次

正则表达式括号匹配问题
使用正则表达式提取括号内容,此处考虑多重括号的情况,该怎么做?
比如:
table('aa','bb',cc)+('ad.get()',ad.getid(),'ad.getdescription()')
要能提取出来
'aa','bb',cc
'ad.get()',ad.getid(),'ad.getdescription()'
这两部分就可以,怎么写正则,求此方面大神指教!
正则表达式 括号

------解决方案--------------------
引用:
涉及括号匹配,估计正则搞不定。

其实正则没什么搞不定,只有效率的高低和程度的深浅。。
为了这个专门学了一会,搞定了。。
楼主看看吧

String s="table('aa','bb',cc)+('ad.get()',ad.getid(),'ad.getdescription()')";
Pattern p=Pattern.compile(".*?\\((.*?)(?<!\\()\\)");
Matcher m=p.matcher(s);
while(m.find()){
System.out.println(m.group(1));
}

结果:
'aa','bb',cc
'ad.get()',ad.getid(),'ad.getdescription()'