0

正規表現に一致する特定の部分文字列を解析して変更したい文字列があります。

<img>解析する必要があるテキストは、タグで囲まれたテキストとタグの混合物であり、タグ<a>全体を<a>取り除き、タグの src 属性の修正版に置き換える必要があります<img>。次のコードは 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 に答える