第一段是获取 <p></p>标签内部的数据,第二个是获取 <p><span></span></p>标签中的数据,其中span标签中有style属性值。
使用过正则表达式的同学肯定知道,上面两种情况其实都是一种情况,我们要获取的是 尖括号括起来的一对标签 中间的数据,起始标签形如<x>,结束标签形如</x>,这里的x表示的html标签。
此外,我们还需要考虑起始标签中包含style的数据,另外特殊的 <br/>标签,对实际获取数据无意义,也需要过滤掉。
通过上面的分析,我们可以如下正则表达式:
在使用正则表达式处理之前,我们先对数据进行预处理,比如style和
标签:
针对多个标签嵌套的情况进行处理,比如 <p><span style="white-space: normal">王者荣耀</span></p>,在经过预处理和正则匹配的后结果是 <span>王者荣耀 ,需要手工移除掉前面的起始标签,对应的方法如下:
测试方法如下:
output:
方法1:var d = document.createElement("div")
d.innerHTML = '<tr><td class="ppprod_lefttd ppprod_cell">上次余额:</td><td class="ppprod_confirm ppprod_cell" id=""><span name="item22" id="item22" delim="" class="" >114.74</span></td></tr>'
alert(d.getElementsByTagName("span")[0].innerText)
用正则
var str = '<tr><td class="ppprod_lefttd ppprod_cell">上次余额:</td><td class="ppprod_confirm ppprod_cell" id=""><span name="item22" id="item22" delim="" class="" >114.74</span></td></tr>'
alert(str.match(/^.*>(\d+(\.?\d+)?)<.*$/)[1])
只提取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?
麻烦采纳我的答案吧,(*^__^*) 嘻嘻……