高分求解!100分
有这样一个字符串:
# '1998-04-26 08:48:00 ' 博客斯多夫 2#删除 2#里那个斯多 可可 是
采用split如何用正则表达式把拆分成下面的结果:
1998-04-26 08:48:00
博客斯多夫
2#删除
2#里那个斯多
可可
是
------解决方案--------------------str.split( "# '| ' | (?!\d\d) ");
可以像你那样分开.
-----------------
我的BLOG里有一个正则表达式测试器,会输出split,match的结果,你可以试试.
------解决方案--------------------public class Out {
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})[ ]+ ")
------解决方案--------------------package test;
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#里那个斯多
可可
是