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

请帮忙解决一个正则表达式!
现有文本文件内容:
[HEAD]
01|20131111|E32423|324324|983|983|459
[AAA]
110101|34234|3412134|111
110102|33534|343255|222
[BBB]
110101|34234|3412134|111
110102|33534|343255|222
[SITRBEND]

通过字符流获取后得到以下字符串:
[HEAD]\r\n01|20131111|E32423|324324|983|983|459\r\n[AAA]\r\n110101|34234|3412134|111110102|33534|343255|222\r\n[BBB]\r\n110101|34234|3412134|111\r\n110102|33534|343255|222\r\n[SITRBEND]\r\n

将该字符串按标签用正则表达式分段为:
string[0]=[HEAD]\r\n01|20131111|E32423|324324|983|983|459\r\n
string[1]=[AAA]\r\n110101|34234|3412134|111110102|33534|343255|222\r\n
string[2]=[BBB]\r\n110101|34234|3412134|111\r\n110102|33534|343255|222\r\n
string[3]=[SITRBEND]\r\n

------解决方案--------------------

public static void main(String[] args) {
String str = "[HEAD]\r\n01
------解决方案--------------------
20131111
------解决方案--------------------
E32423
------解决方案--------------------
324324
------解决方案--------------------
983
------解决方案--------------------
983
------解决方案--------------------
459\r\n[AAA]\r\n110101
------解决方案--------------------
34234
------解决方案--------------------
3412134
------解决方案--------------------
111110102
------解决方案--------------------
33534
------解决方案--------------------
343255
------解决方案--------------------
222\r\n[BBB]\r\n110101
------解决方案--------------------
34234
------解决方案--------------------
3412134
------解决方案--------------------
111\r\n110102
------解决方案--------------------
33534
------解决方案--------------------
343255
------解决方案--------------------
222\r\n[SITRBEND]\r\n";
String arr[] = str.split("(?<!^)(?=\\[.*?\\])");
for(int i=0;i<arr.length;i++){
System.out.println(">>>>>>>>>>>>>>>>>>>>>>");
System.out.println(arr[i]);
}
}