【发布时间】:2011-10-06 07:00:12
【问题描述】:
我有一个“xml 文件”文件,其中包含一些不需要的字符
<data>
<tag>blar </tag><tagTwo> bo </tagTwo>
some extra
characters not enclosed that I want to remove
<anothertag>bbb</anothertag>
</data>
我认为以下非贪婪替换会删除未正确封装在 <sometag></sometag> 中的字符
re.sub("</([a-zA-Z]+)>.*?<","</\\1><",text)
^ ^ ^ ^ text is the xml txt.
remember tag, | | put tag back without and reopen next tag
read everything until the next '<' (non-gready)
这个正则表达式似乎只能在</tag>[[]]<tagTwo> 中找到[[]] 指示的位置
我做错了什么?
编辑: 这个问题的动机已经解决(参见 cmets,我在 xml 文件中有一个杂散的 & 导致它无法解析 - 它与我要删除的字符无关)。但是,我仍然对正则表达式是否可行(以及我的尝试有什么问题)感到好奇,所以我没有删除这个问题。
【问题讨论】:
-
@cwallenpoole:我不想解析 xml。我正在尝试清理 xml 文件,以便我可以让它被解析器接受。欢迎任何有关如何执行此操作的非正则表达式建议
-
哪个解析器不接受这个?
-
@IgnacioVazquez-Abrams
xml.dom.mindom我已编辑问题以包含回溯 -
听起来你里面有一个杂散的&符号。
-
& 符号的字符实体引用是
&amp;。但是,您不能只做一个全局 S+R,因为这可能会弄乱其他有效的事情。
标签: python regex regex-greedy non-greedy