跳到主要内容
CNode

html正则匹配求助

问答
Wwangchaoduo发布于 8 年前最后回复 8 年前
951770
<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)

H
hua03#98 年前

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

W
wangchaoduo#88 年前
引用 xinggsf用css不是更好吗?

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

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

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

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

@atian25 最后还是用了cheerio。。

Y
yszou#58 年前

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

A
atian25#48 年前
T
tower1229#38 年前

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

X
xinggsf#28 年前

用css不是更好吗?

W
wangchaoduo#18 年前

楼主目前是:

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

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

参与回复

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