比如下面这段示例html ,里面有很多div,每个div中都有很多a标签和其它标签,请写一个正则,匹配id=div1中的所有a标签。 我已写了一个正则,但是性能太低:(?<=<div\s+id="div1"(?:(?!</div>)[\s\S])*?)<a>。
求高人写一个性能更高的正则。谢谢。
列出的html只是示例,比较短小,正则的性能问题不太明显。实际情况html复杂得多,性能影响很大,所以在此求一个性能更好的正则。
<div id="div0"> <li><a></li> <li><a></li> <li><a></li> <li><a></li> <li><a></li> </div> <div id="div1"> <li><a></li> <li><a></li> <li><a></li> <li><a></li> <li><a></li> </div> <div id="div2"> <li><a></li> <li><a></li> <li><a></li> <li><a></li> <li><a></li> </div>
使用场景比较特殊,只能用正则表达式。
如果只是从一大堆html里找到div1,再找div1里的a标签,还不如先用SubString()取到div1这一段再用正则取其中的a标签。
var xpathExp='//div[@id="div1"]/a'; var result=document.evaluate(xpathExp, otherparas);
这种情况下用xpath
只能用正则
用jq ,$(html).children("#div1 a")行吗?