有这样一个字符串"to_timestamp('1970-01-01 08:00:00.0', 'yyyy-mm-dd HH24:MI:SS.FF'),'test String',11347"
我想用String的split方法把它分成
to_timestamp('1970-01-01 08:00:00.0', 'yyyy-mm-dd HH24:MI:SS.FF')
'test String'
11347
规则就是用逗号分开,除了在括号内的逗号,请问要怎么写这个正则表达式?
我想用String的split方法把它分成
to_timestamp('1970-01-01 08:00:00.0', 'yyyy-mm-dd HH24:MI:SS.FF')
'test String'
11347
规则就是用逗号分开,除了在括号内的逗号,请问要怎么写这个正则表达式?
解决方案 »
- 如何将代码显示工整?
- (1)new list int[10],(2) new list int[6]把(2)插入到(1)中,并返回最大数.请教值怎么做的啊,谢谢
- 请教:类的继承和合成
- 如何让机子上没有jdk的用户能运行java class文件
- 请问部署在同一个应用服务上的两个不同的war包,其中一个能否用类反射机制读到另一个war包的类信息?
- 高手们!请问JAVA中如何获取主机MAC地址呢?
- win xp2 JSObject
- 大家推荐一本java的书吧
- 求一句sql
- 请问那里有编写拖放控制技术的资料,请各位大侠救命,help!!!!!!!
- 在java中怎么用Socket在不同的局域网之间通信?
- java socket email 问题
String html = "to_timestamp('1970-01-01 08:00:00.0', 'yyyy-mm-dd HH24:MI:SS.FF'),'test String',11347";
String[] str = html.split(pattern);
for(int i=0;i<str.length;i++){
System.out.println(str[i]);
}
结果是:
to_timestamp('1970-01-01 08:00:00.0'
'yyyy-mm-dd HH24:MI:SS.FF')
'test String'
11347
'test String'
11347
3L的结果是这样的。
to_timestamp('1970-01-01 08:00:00.0'
'yyyy-mm-dd HH24:MI:SS.FF')
'test String'
11347
JDK1.5.19
那么,你的目的就是要将一个字符串里面的一类分隔符中的某一个或几个没有足够特征的给剔除掉,这基本是没可能的,不确定因素太多了;即使是上面的字符串,你需要做分隔符的','跟要保留的','也没有足够的区别。
更关键的是,你要的split只能是用','分割,匹配条件越多,最终丢掉的字符越多,最后找回更麻烦所以上面的要一步到位,好像没什么可能,还是分几步来做吧
String pattern = "(?<![^\\)]{1,30}),";
String html = "to_timestamp('1970-01-01 08:00:00.0','yyyy-mm-dd HH24:MI:SS.FF'),'test String',11347";
String[] str = html.split(pattern);
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);
}
to_timestamp('1970-01-01 08:00:00.0','yyyy-mm-dd HH24:MI:SS.FF')
'test String',11347
以前还没注意可以非捕获的,不错,学到了,呵呵
不过非捕获的也是要匹配的,所以你只能把timestamp后面的第一个','给弄出来,后面的就不行了
String html = "to_timestamp('1970-01-01 08:00:00.0','yyyy-mm-dd HH24:MI:SS.FF'),'test String',11347";
Pattern pattern=Pattern.compile(".*?\\([^(]*\\)|[^,]+");
Matcher mat=pattern.matcher(html);
while(mat.find()){
System.out.println(mat.group());
}