正则表达式问题

时间:2010-09-04 15:28:45

标签: regex

我的内容类似于

<div class="c2">
<div class="c3">
<p>...</p>
</div>
</div>

我想要的是匹配div.c2的内部HTML。它的内容可能会有很大差异。我在这里遇到的唯一问题是我怎样才能让它工作以便正确的结束div?

3 个答案:

答案 0 :(得分:1)

你做不到。使用经典正则表达式以及大多数现有的正则表达式实现时,此问题无法解决。

但是,一些正则表达式引擎对平衡对匹配有特殊支持。例如,参见here(.NET)。虽然在这种情况下,你的正则表达式只能解析语法正确文本的一个子集(例如,如果< /div >嵌入到注释中会怎样?)。您需要一个HTML解析器才能获得可靠的结果。

答案 1 :(得分:0)

这有可能永远是有效的XHTML吗?如果是这样,那么最好将其解析为XML而不是尝试正则表达式。

答案 2 :(得分:0)

删除第一行,删除最后一行。问题解决了。不需要RegEx。

以下模式适用于.Net RegEx实现:

\<div class="c2"\>{[\n a-z.<>="0-9/]+}\</div\>

我们用\ 1替换它。

输入:

<div class="c2">
<div class="c3">
<p>...</p>
</div></div></div></div></div></div></div></div>
</div>

输出:

<div class="c3">
<p>...</p>
</div></div></div></div></div></div></div></div>