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

高分求解!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#里那个斯多
可可