请教一个分割用的正则表达式. String txt = "aaa,bbb(20,3),ccc,ddd(ww,qq)"String[] arr = txt.split(""); //这里写什么正则??//最后想得到的结果是:arr[0] = "aaa";arr[1] = "bbb(20,3)";arr[2] = "ccc";arr[3] = "ddd(ww,qq)";这个正则怎么写啊?试了半天没搞定,请大家帮忙~~最好说明一下答案的意思,学习一下,谢谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有想到方法,txt.split()是把字符串按照某个字符或串进行分割 耶,搞定了。public class Test{ public static void main(String args[]) { String str = "aaa,bbb(20,333,333),ccc,ddd(ww,qq,333,555),ee(aaa,33),ff"; String regex = ",(?![^(]*\\)\\s*(?:,|$))"; String[] strs = str.split(regex); for(String s : strs) { System.out.println(s); } }} String txt = "aaa,bbb(20,ddd(1, 2)),ccc,ddd(ww,qq)"楼主,这种你想分割嘛? 这种东西我向来手写,你这个搞个栈就搞定了,RTF都被我搞定了。 你到网上搜RTF解析器,可能就能找到我写的。 这种就很难做了,Perl 和 .Net 中支持递归结构的正则表达式,在 Java 中做不到,要实现的话得动态生成正则表达式,这是相当麻烦的。如果存在这种情况的话,还是采用甘草的方法用栈吧。 这种不分解,不用嵌套的,有好方法吗,最好还能解释一下,学习学习~感谢6楼bao110908 ,能不能解释一下啊 String regex = ",(?![^(]*\\)\\s*(?:,|$))"; ????? 一开始做不来 一看火龙果的才恍然但貌似这样就满足了String regex = ",(?![^(]*\\))";不知道后面的非捕获有何深意 to: dracularking我错了,不好意思哈,开始把所有的条件都加上去了,也没有把它们擦掉再试试看了,呵呵。 String regex = ",(?![^(]*\\))";逗号左边的缝隙后面不允许出现,以闭括号结尾的非开括号的一些字符,就是括号中逗号所具有的特征。 HOHO~~开玩笑了~~不过真的想听听这个正则的解释,dracularking ,bao110908 你俩都会,麻烦讲讲吧~~ 以 (? 开头的都是非捕获结构,即在匹配完成后不会在内存中保留,而 () 这种形式的会在内存中保留下来,以备后用。a(?=X),表示 a 的后面允许跟着字母 X,可以看成 a 字符后面的缝隙a(?!X),表示 a 的后面不允许跟着字母 X(?<=X)a,表示 a 的前面允许出现字母 X(?<!X)a,表示 a 的前面不允许出现字母 X JFrame显示 在java中, 如何将含多个文件的gzip解压? 计算java程序的运行时间和内存使用 关于drawline函数的问题。新手求指导 有谁做过基于linux的非图形界面的java程序? 求设计思路 请看这段JDBC代码 再问:如何实现人民币的大小写问题? java数据库问题 谁能告诉我什么TOMCAT有什么用 小弟初学JAVA求教各位高手线程问题! 做毕业设计了!给参谋下
String str = "aaa,bbb(20,333,333),ccc,ddd(ww,qq,333,555),ee(aaa,33),ff";
String regex = ",(?![^(]*\\)\\s*(?:,|$))";
String[] strs = str.split(regex);
for(String s : strs) {
System.out.println(s);
}
}
}
这种就很难做了,Perl 和 .Net 中支持递归结构的正则表达式,在 Java
中做不到,要实现的话得动态生成正则表达式,这是相当麻烦的。如果存在这种情况的话,还是采用甘草的方法用栈吧。
这种不分解,不用嵌套的,有好方法吗,最好还能解释一下,学习学习~
感谢6楼bao110908 ,能不能解释一下啊 String regex = ",(?![^(]*\\)\\s*(?:,|$))"; ?????
但貌似这样就满足了
String regex = ",(?![^(]*\\))";
不知道后面的非捕获有何深意
而 () 这种形式的会在内存中保留下来,以备后用。a(?=X),表示 a 的后面允许跟着字母 X,可以看成 a 字符后面的缝隙
a(?!X),表示 a 的后面不允许跟着字母 X
(?<=X)a,表示 a 的前面允许出现字母 X
(?<!X)a,表示 a 的前面不允许出现字母 X