我的内容类似于
<div class="c2">
<div class="c3">
<p>...</p>
</div>
</div>
我想要的是匹配div.c2的内部HTML。它的内容可能会有很大差异。我在这里遇到的唯一问题是我怎样才能让它工作以便正确的结束div?
答案 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>