0

我有一个字符串,我想解析和修改与正则表达式匹配的某些子字符串。

我需要解析的文本是<img>由标签包围的文本和标签的混合体,<a>我需要去掉整个<a>标签并将其替换为<img>标签的 src 属性的修改版本。以下代码在获取 src 属性方面做得很好,但只返回了一个匹配子字符串的正则表达式列表,在不知道找到匹配项的位置的情况下,这并没有多大用处。

print re.findall('<a.+><img.+src="(.+?)".+/></a>', sample_text)

(我知道这不是防弹的,但它确实适用于这项工作)

达到预期效果的最佳方法是什么?

示例输入:

<a href="http://www.example.com/test.png"><img src="http://www.example.com/test.png" /></a>

Bla blabla

<a href="http://www.example.com/test.png"><img src="http://www.example.com/test.png" /></a>
bla bla bla

期望的输出:

<div><img src="http://www.different_domain.com/images/test.png" /><div>

Bla blabla

<div><img src="http://www.different_domain.com/images/test.png" /></div>
bla bla bla
4

1 回答 1

1

你可以re.sub用来做替换:

>>> string = '''<a href="http://www.example.com/test.png"><img src="http://www.example.com/test.png" /></a>

Bla blabla

<a href="http://www.example.com/test.png"><img src="http://www.example.com/test.png" /></a>
bla bla bla'''
>>> print re.sub(r'<a.*><img(.+)src="(.+?)(\/[^\/]+)"(.*/?)></a>', r'<div><img\1src="http://different-domain.com/images\3"\4></div>', string)
<div><img src="http://different-domain.com/images/test.png" /></div>

Bla blabla

<div><img src="http://different-domain.com/images/test.png" /></div>
bla bla bla

您可能想要捕获更多组,但我认为这是您正在寻找的要点

于 2013-05-16T15:19:11.090 回答