繁体   English   中英

Python 正则表达式:获取具有特定模式的字符串

[英]Python regular expression: Getting string with certain pattern

我需要一些关于 python 中的正则表达式的帮助。 不幸的是,我有很多文件包含无效的 xml:如下所示,一些“img”标签未关闭。

<a href="a_url" class="url" target="_blank">
   <img ng-src=" {{getImageUrl('homeHelp64.jpg')}}" alt="?" width="16" height="16">
      Home
</a>

在 Python 中,我想做的是找到所有未关闭的“img”标签并将其替换为如下所示的关闭标签(> 之前的“/”):

<img ng-src=" {{getImageUrl('homeHelp64.jpg')}}" alt="?" width="16" height="16"/>

使用以下模式,我可以获得 img 标签的所有实例,但我只需要获取未关闭的实例。

pattern = '(img.*?)>'

将感谢您在定义模式以及如何替换“img”和最后关闭 xml 标签方面的帮助。

如果我正确理解了问题,我设法编写了所需的正则表达式。 通过链接,您可以测试表达式。 必需标志 - s

https://regex101.com/r/YctLzb/5/tests

\<(\w+)\s[^<>]+\>(?!.*\<\/\1\>)

更新:这在没有 s 标志的情况下有效,并且匹配没有 attrs 的标签: https://regex101.com/r/6nwHQP/1/tests

\<(\w+)(?:\s[^<>]+)?\>(?!(?:.|\n)*\<\/\1\>)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM