开发者社区 问答 正文

查找xml中缺少的结束标记

我有一些xml,它是一个nlp提取工具,带有一些不匹配的标签。然后我尝试使用regex来查找不匹配的标记并纠正这个问题,但是我在regex部分遇到了麻烦。 我可以选择 标记的所有实例,但我只想选择那些没有关闭标记的实例,并使用replace添加匹配的关闭标记。如何缩小范围,并正确替换? xx的实际结果是( . ) ,但我需要它 Margrethe II 。 发现:<名称>。 替换:(<名称>。*)< /名称>

import re

mmt = """<Sovereigns>
    <Queens>
        <Queen>
            <Name>Elizabeth II</Name>
            <Country>Great Britain and Northern Ireland</Country>
        </Queen>
        <Queen>
            <Name>Margrethe II
            <Country>Denmark</Name></Country>
        </Queen>
    </Queens>
</Sovereigns>"""

# remove extra closing tag
x = re.sub("</Name><", "<", mmt)
# add closing tag to those missing
xx = re.sub("<Name>.*", "(<Name>.*)</Name>", mmt)

问题来源StackOverflow 地址:/questions/59381476/regex-to-find-missing-closing-tag-in-xml

展开
收起
kun坤 2019-12-28 13:47:53 639 分享 版权
1 条回答
写回答
取消 提交回答
  • 你希望你的xx线是:

    xx = re.sub("<Name>(?!.*</Name>)(.*)", r"<Name>\1</Name>", mmt)
    

    替换包含捕获组1的反向引用。

    2019-12-28 13:48:02
    赞同 展开评论
问答标签:
问答地址: