有这样一个字符串:
#'1998-04-26 08:48:00' 博客斯多夫 2#删除 2#里那个斯多 可可 是
采用split如何用正则表达式把拆分成下面的结果:
1998-04-26 08:48:00
博客斯多夫
2#删除
2#里那个斯多
可可
是
#'1998-04-26 08:48:00' 博客斯多夫 2#删除 2#里那个斯多 可可 是
采用split如何用正则表达式把拆分成下面的结果:
1998-04-26 08:48:00
博客斯多夫
2#删除
2#里那个斯多
可可
是
似乎只用正则表达式不能直接得到楼主想要的结果,但由于前面的时间是固定长度的,所以可以先把这个字符串取出来,然后对剩下的部分进行split,或者直接split也行,但把结果的前两项再合并起来。当然,这两种方法都有点BT,呵呵~~
因为要区分不同位置的空格,就会把空格之外的特征符split没了
http://www.regexlab.com/zh/regref.htm
可以像你那样分开.
-----------------
我的BLOG里有一个正则表达式测试器,会输出split,match的结果,你可以试试.
public static void main(String[] args) {
String str="#'1998-04-26 08:48:00' 博客斯多夫 2#删除 2#里那个斯多 可可 是";
String regex="#'|' | (?!\\d\\d)";
String[] result=str.split(regex);
for(int i=0;i<result.length;i++){
System.out.println(result[i]);
}
}}
--------------------------------------
输出:1998-04-26 08:48:00
博客斯多夫
2#删除
2#里那个斯多
可可
是
---------
注意,第一个元素是一个""字符串.
str.split("^#'|(?<=^.{21})'[ ]+|(?<!^.{12})[ ]+")
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Regex2 {
public static void main(String[] args){
String str="#'1998-04-26 08:48:00' 博客斯多夫 2#删除 2#里那个斯多 可可 是";
String str1;
String[] res;
Pattern p=Pattern.compile("#'([^']*)'\\s(.*)");
Matcher m=p.matcher(str);
while(m.find()){
System.out.println(m.group(1));
str1=m.group(2);
res=str1.split("\\s");
for(int i=0;i<res.length;i++){
System.out.println(res[i]);
}
}
}
}------------------------------
输出:
1998-04-26 08:48:00
博客斯多夫
2#删除
2#里那个斯多
可可
是