通过正则表达式删除XML标记

时间:2010-10-04 13:03:18

标签: xml regex tags

问候, 我已经阅读了关于这个主题的一些主题,但实际上我无法找到或想出一个适当的解决方案(参见例如:Regular expression to remove XML tags and their content)。

我有一个像这样的xml标签:

<bla_tag size="100"
         diameter="50"
         ratio="0.2"
         path="/user/home/something.pdf">
</bla_tag>

目标:使用正则表达式删除<bla_tag ...>之间的所有内容。

问题:每个bla_tags(文件中大约1000个bla-tag)中的大小等值都会发生变化。

尝试失败:我尝试使用:<bla_tag .*?>(?使其不那么贪婪......)。 失败的结果:仅标记了<bla_tag,但未标记整个括号内的内容!

我做错了什么 - 或者实际上是否有可能基于正则表达式来解决这个问题(我在某处读到由于xml属性是第2类语言而无法实现,你可以确认吗?)< / p>

1 个答案:

答案 0 :(得分:5)

您想阅读RegEx match open tags except XHTML self-contained tags

严重。

使用xml解析器。 (说实话,它们并不难用)。它们通常有两种版本之一 - SAX和DOM,你可能更喜欢SAX。

我最喜欢的解析器是expat,但它们都有它们的微妙之处,所以它并不总是一刀切。