有这样一段html标签
<p style="">aaa<p>bbb</p>ccc<p>ddd</p>eee</p>
<p>ffff</p>
我想最终得到的是第一行中从红色p标签开始到红色p标签结束,其中可能还包括多个成对出现的p标签例如蓝色和绿色部分的,但不包括下一行的p标签,
应该怎样写呢?
我这样写:<p.*?(<p>.*?</p>)?.*?</p>,最终得到的是<p style="">aaa<p>bbb</p>
求各位同行老师不吝赐教
<p[^<]*>.*?(.*?(((?'kh'<p[^<]*>).*?)+((?'-kh'</p>).*?)+)*(?(kh)(?!)))</p>
这个是对的,多谢
我有个不明白的地方希望您能指教一下,
(?'-kh'</p>)这个是什么意思?
@agoodchild:
意思是每碰到一个</p> 就弹出一个<p[^<]*>,保持成对出现,
'kh'代表着被捕获的<p[^<]*>内容
@Yu: 谢谢!
哥们,用<p[^<]*((<p[^<]*</p>)[^<]*)*?</p>就可以匹配到你想要的。
不信下面代码你放到一个html文件里运行一下。
<html>
<body onload="show();">
<script>
function show() {
var str = '<p style="">aaa<p>bbb</p>ccc<p>ddd</p>eee</p><p>ffff</p>';
var regStart = /<p[^<]*((<p[^<]*<\/p>)[^<]*)*?<\/p>/;
var start = regStart.exec(str)[0];
alert(start);
}
</script>
</body>
</html>
要给分哦
多谢你哥们,但是这个语句有个问题就是再多加一层嵌套的话结果就不对了,
<p style="">aaa<p>bbb</p>ccc<p>ddd</p>eee</p>
<p style="">[\S]*</p>
谢谢