我正在尝试使用正则表达式从页面源中捕获标记。 经过一番尝试后,我觉得很难建立起来。 以下是HTML源代码的示例:
<script>
var xhttp;
if (window.XMLHttpRequest){
xhttp = new XMLHttpRequest();
} else {
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
var clientToken;
xhttp.onreadystatechange = function(){
if (xhttp.readyState == 4 && xhttp.status == 200){
clientToken = xhttp.responseText.content;
}
};
xhttp.open("GET", "http://localhost:8080/client/123/token", true);
xhttp.setRequestHeader("Content-Type", "application/json");
xhttp.send();
braintree.setup(clientToken, "dropin", {
container: "payment-form"
});
</script>
我试图只捕获(div class =“searchBx”)标记和里面的标记。
这很难,因为它总是在他之后抓住div标签。 结果应该是:
<div class="searchBx">
<div>
<li><a href="/" class="on">somthing</a></li>
</div>
</div>
<div>
<li><a href="/" class="on">somthing2</a></li>
</div>
非常感谢。
答案 0 :(得分:2)
正则表达式不可能匹配你所说的div。
由于div包含另一个div,因此它本身无法区分其中的</div>
标记或关闭您希望匹配的div的</div>
标记。
<div class="searchBx">
<div>
<li><a href="/" class="on">somthing</a></li>
</div> <!-- This -->
</div> <!-- and this are the same to regex -->
<div>
<li><a href="/" class="on">somthing2</a></li>
</div>
这里发生了什么:http://regexr.com/3d0jn
对于您需要做的事情,您必须使用您使用的任何语言的DOM解析器。
加it's incredibly poor practice using regex to parse HTML,但无论如何,每个人都会这样做。