用正则表达式替换文本

时间:2010-12-14 14:16:59

标签: python regex string replace

我必须以这种方式替换文字:

Some data la-la-la [image=test.png] next data...
Some data la-la-la 123 [image=test2.png]

并将其替换为:

Some data la-la-la test.png next data...
Some data la-la-la 123 test2.png

我尝试使用python中的re.sub方法:

for foo in re.search('(\[image=(.*)\])', text):
   text = re.sub("(?<=\[image=)*(?=\])", foo, text)

但这不起作用,为什么?

1 个答案:

答案 0 :(得分:4)

说真的,您是看过regex documentation还是至少是howto

  • .search()返回一个匹配对象。你不能迭代它。
  • .sub()一次替换字符串中的所有匹配项。你无法逐一替换。

一个想法:

import re

text = """Some data la-la-la [image=test.png] next data...
Some data la-la-la 123 [image=test2.png]"""

text = re.sub(r'\[image\=([^\]]+)\]', r'\1', text)

print text

结果:

Some data la-la-la test.png next data...
Some data la-la-la 123 test2.png