CNode

html正则匹配求助

问答
Wwangchaoduo发布于8 年前最后回复8 年前9 回复5146 浏览0 收藏
<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)

T
tower1229#1·8 年前

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

A
atian25#2·8 年前
Y
yszou#3·8 年前

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

H
hua03#4·8 年前

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

W
wangchaoduo#5·8 年前

楼主目前是:

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

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

X
xinggsf#6·8 年前

用css不是更好吗?

W
wangchaoduo#7·8 年前
引用 atian25用 https://github.com/cheeriojs/cheerio 吧。。。

@atian25 最后还是用了cheerio。。

W
wangchaoduo#8·8 年前
引用 tower1229你的真正需求是什么?应该有比正则更简单的办法

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

W
wangchaoduo#9·8 年前
引用 xinggsf用css不是更好吗?

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

参与回复
登录后即可参与回复。登录