正则表达式:找到所有未注释的标签

时间:2016-04-06 13:04:16

标签: javascript php html regex xml

我想从html或xml文件中提取未注释掉的所有节点。 以下正则表达式是我目前的方法。

我的RegEx

/<span.*?>([\s\S]*?)<\/span>/gi

这里是示例xml

<div>
<p>
    <span style="font-size: 20px;">Hello</span>
    <span style="font-size: 20px;">World</span>
</p>
<p>
    <!--
    <span>Hello</span> 
    <span>World</span>
    -->
</p>
<p>
    <span>Hello</span>
    <span>World</span>
</p>
<!--
<p>
    <span>Hello</span> 
    <span>World</span>
</p>
-->

我很感激帮助。

最好的问候, 迈克尔

1 个答案:

答案 0 :(得分:0)

好吧,您可以使用合适的解析器(在这种情况下为func pickerView(pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat { return self.view.bounds.width } )删除注释,然后分析剩余部分。请考虑以下代码(请注意DomDocument字符串中已更改的数字,以明确删除的内容):

Hello World

现在您的评论标签已被删除。显然,你可以摆弄<?php $html = '<div> <p> <span style="font-size: 20px;">Hello</span> <span style="font-size: 20px;">World</span> </p> <p> <!-- <span>Hello2</span> <span>World2</span> --> </p> <p> <span>Hello3</span> <span>World3</span> </p> <!-- <p> <span>Hello4</span> <span>World4</span> </p> --> </div> '; $dom = new DOMDocument; $dom->loadHtml($html); $xpath = new DOMXPath($dom); foreach ($xpath->query('//comment()') as $comment) $comment->parentNode->removeChild($comment); $body = $xpath->query('//body')->item(0); echo $dom->saveXml($body); # yields hello world and hello world3 ?> 来更精确。