html正则匹配求助
发布于 7 年前 作者 wangchaoduo 4061 次浏览 来自 问答
<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文档很大的话,正则写不好很容易出问题…

回到顶部