Заменить текст регулярным выражением - PullRequest
1 голос
/ 14 декабря 2010

Я должен заменить текст следующим образом:

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

Я пытался с помощью метода re.sub из python:

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

Но это не сработает, почему?

1 Ответ

4 голосов
/ 14 декабря 2010

Серьезно, вы читали документацию регулярного выражения или хотя бы 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...