我有一些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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
你希望你的xx线是:
xx = re.sub("<Name>(?!.*</Name>)(.*)", r"<Name>\1</Name>", mmt)
替换包含捕获组1的反向引用。