1

我有一些 SGML,我试图通过在开始标签中添加结束标签来清理它们。现在,文档的结构如下:

<CAT>
<NAME>Daniel
<COLOR>White
<DESC>Daniel is a white cat <p>He was born in July</p><br />He's super cute.<p><br />He does not have any siblings.
<COUNTRY>USA
</CAT>

到目前为止,我可以匹配一个打开的标签并使用这个正则表达式将内容捕获为一个组: <NAME>([^\\<]+)[^<]如果内容区域内没有任何<p>、、</p><br />元素。

但是如果我这样做 <DESC>([^\\<]+)[^<]了,模式匹配会在第一个之前停止<p>

我使用<模式结束的原因是因为所有其他打开的节点都没有停止匹配的 html 元素

如何制作一个匹配<DESC>包含<p></p>和在节点<br />之前结束的<COUNTRY>节点的正则表达式?

4

1 回答 1

2

这个怎么样:

<DESC>((?:</?p>|<br />|[^\\<])+)

这允许这三个标签匹配并在<不属于三个标签之一的下一个标签处停止。

顺便说一句,您为什么不允许反斜杠作为有效字符?

于 2013-02-06T20:47:52.357 回答