JAVA正则表达式解析HTML字符串

现在我有如下字符串: <R_Data> 0005,实验室0,0,0|0101,实验室A-测试点1,200,200|0102,实验室C-测试点2,80,400|0109,实验室C-测试点1,80,300|1020,实验室C-测试点3,80,500|1141,实验室A-测试点2,400,400|1146,实验室A-测试点3,300,300|1239,实验室B-测试点1,50,150|1240,实验室B-测试点2,80,200|1264,实验室B-测试点3,220,110| </R_Data>

如何使用正则表达式将<R_Data></R_Data>中的内容解析出来成如下格式
0005,实验室0,0,0

...
1264,实验室B-测试点3,220,110

上述解析完毕后怎么继续使用正则表达式把每一条解析成
String[] str={“0005","实验室0","0","0"}格式的数组

回答完全加分

第1个回答  2013-04-16
1.首先提取<R_Data> 之间的内容. 我觉得不需要用 正则.
int start= str.indexOf(">",0);//返回 字符串 <R_Date> ">" 的索引 其中str 是整个字符串
int end =str.indexOf("<",start); //返回 </R_Data> 中"<" 的索引.
String s=subString(str,start,end); 这样就可以去掉 这对标签了. //s 是去掉标签之后的字符串
2. String[] sa=s.split("|"); 用 | 把这个字符串分割开. 结果返回的是一个 字符串数组.
例如 :0005,实验室0,0,0
1239,实验室B-测试点1,50,150
3.想要 这个样子的数组 String[] str={“0005","实验室0","0","0"} 可以将 上述sa 数组中的 每个元素继续分割.
如 String[] ss = sa[0].split(",",2)
思路就是这样 可能有一些细节上的问题. 遇到了问题 再 追问
第2个回答  2013-04-16
public class TestString4 {
public static void main(String[] args) {
String s = "<R_Data> 0005,实验室0,0,0|0101,实验室A-测试点1,200,200|0102,实验室C-测试点2,80,400|0109,实验室C-测试点1,80,300|1020,实验室C-测试点3,80,500|1141,实验室A-测试点2,400,400|1146,实验室A-测试点3,300,300|1239,实验室B-测试点1,50,150|1240,实验室B-测试点2,80,200|1264,实验室B-测试点3,220,110| </R_Data>";
s = s.replace("<R_Data>", "").replace("</R_Data>", "").trim();
String ss[] = s.split("\\|");
String[][] sss = new String[ss.length][];
for(int i=0;i<ss.length;i++){
sss[i] = ss[i].split(",");
}
}
}

sss中存放的就是你需要的数据

追问

我自己本身用的方法就是这个,但我想要的是正则表达式解析啊

追答

split本来接受的就是正则表达式,那就看你想用正则匹配什么,是匹配分隔符还是匹配内容

追问

应该是把每一条数据内容再次匹配

0005,实验室0,0,0 使用正则表达式把逗号前后的内容匹配后取出来放到数组或者List里面去

变成
0005
实验室0
0
0

追答

String ss[] = s.split("\\|");
这个ss数组一共是10条记录
每一个就是类似 “0005,实验室0,0,0” 这样的内容
然后创建了一个二维数组String[][] sss = newString[ss.length][];
并且将一维数组中的内容再次拆分形成了二位数组的内容sss[i] = ss[i].split(",");
sss[1]中存放的就是一个数组{“0005","实验室0","0","0"}.这个地方你也可以使用ArrayList来实现。考虑到你这个程序很有可能是用来分析数据,使用数组要比list快的多。

本回答被提问者采纳
第3个回答  2013-04-16

第4个回答  2013-04-16
操作字符创的split的分割和替换的方法的调用
第5个回答  2013-12-24
hello world1
hello world2

i want to try

hello world2
hello world1

相似回答