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

html-css08

JAVA正则表达式解析HTML字符串,第1张

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)

思路就是这样 可能有一些细节上的问题. 遇到了问题 再 追问

我再补充一下哈,以你的描述。因为在取的目标字符串里面含有换行符,所以

楼上那位中的"."应该换成"[\s\S]",意思是取任意字符。"."不包含换行,所以匹配会失败

再给你提供一个我遇到这样情况时的思路哈,在多数情况下,尤其是在要取的内容里面又含有开始或者结尾标志时~~这样的情况一般采取几种方法

1.分步剥皮,也就是用多次匹配。一次次往下传递,剥开一层前后减去几个字符。直到找到自己想要的东西。。

2.预计内容长度,也就是用{min,max}的方法估计一个内容长度。。这种方法适用与抓取字符串比较固定长度的。

3.还有就是准确找到开始、目标标记了,这里找开始结束标记不是直接打开源代码看的,是你调试时从程序里面获取到的源代码中看。。其中包含了退格、换行等标记。。一般都能找到比较特殊点的开始和结束标记的

只提取rufus,jenny?不行吧。没有规律啊。是把所有的标签内内容提取了吧。

如果是提取标签内的话这么写:

        Pattern pattern = Pattern.compile(">([^<]+)<")

       

 Matcher macher = 

pattern.matcher("<p><strong><br>Rufus</strong><br>Dan,

 Jenny! Over here! 

</p><p><strong>Jenny</strong><br>Hey, dad!

 </p><p><strong>Rufus</strong><br>Hey, 

hey! You made it. Welcome back! How was your weekend? How was your mom? 

</p>")

        

        while (macher.find())

        {

            System.out.println(macher.group(1))

        }

打印结果:

Rufus

Dan, Jenny! Over here! 

Jenny

Hey, dad! 

Rufus

Hey, hey! You made it. Welcome back! How was your weekend? How was your mom?

麻烦采纳我的答案吧,(*^__^*) 嘻嘻……