html正则匹配求助
 发布于 7 年前  作者 wangchaoduo  4846 次预览  最后一次回复是 7 年前  来自 问答 
<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 回复
wangchaoduo

楼主目前是:

'\<[^(<|>|/)]*?data\-page\=\"1\"[^(<|>)]*?\>[^(<|>)]?\</[^(<|>|/)]*?\>'

但是不能匹配table,有没有匹配table的方法

xinggsf

用css不是更好吗?

tower1229

你的真正需求是什么?应该有比正则更简单的办法

yszou

正则表达式是不能“解析” HTML 的。(可以去了解下“形式语言”这类基础)

wangchaoduo

@atian25 最后还是用了cheerio。。

wangchaoduo

@tower1229 是有一个巨大的html文本,需要选择其中一部分符合当前规则的进行渲染,规则是动态可变的,基本是围绕标签名和一个叫data-page的attr进行变换

wangchaoduo

@xinggsf 因为html文本十分大,会造成很严重的卡顿

hua03

就我个人而言,不是很推荐使用正则来做动态渲染。如果html文档很大的话,正则写不好很容易出问题…