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?
麻烦采纳我的答案吧,(*^__^*) 嘻嘻……