html正则匹配求助
<html>
<body>
<div data-page='1'>666</div>
<h1 data-page='1'>777</h1>
<table data-page='1'>
<tr data-page='1'>
<td data-page='1'>
<div data-page='1'>ddwww</div>
</td>
<td data-page='1'>
<div data-page='1'>ddqqq</div>
</td>
</tr>
</table>
<div data-page='2'>666d</div>
<h1 data-page='2'>777w</h1>
</body>
</html>
有字符串如上
问:如何通过正则匹配出所有data-page=1的html字符串(table元素被匹配出来,但它内部的div不要被匹配出,因为获取到这些html字符串之后用作直接渲染,不然会有重复)
9 回复
楼主目前是:
'\<[^(<|>|/)]*?data\-page\=\"1\"[^(<|>)]*?\>[^(<|>)]?\</[^(<|>|/)]*?\>'
但是不能匹配table,有没有匹配table的方法
用css不是更好吗?
你的真正需求是什么?应该有比正则更简单的办法
正则表达式是不能“解析” HTML 的。(可以去了解下“形式语言”这类基础)
@atian25 最后还是用了cheerio。。
@tower1229 是有一个巨大的html文本,需要选择其中一部分符合当前规则的进行渲染,规则是动态可变的,基本是围绕标签名和一个叫data-page的attr进行变换
@xinggsf 因为html文本十分大,会造成很严重的卡顿
就我个人而言,不是很推荐使用正则来做动态渲染。如果html文档很大的话,正则写不好很容易出问题…