2010-12-14 4 views
1

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

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 из питона:

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

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

+2

-1: ** Сделайте это для меня ** вопрос замаскированный со случайными попытками нонсенс без каких-либо усилий чтения по крайней мере, минимальная часть API – nosklo

+0

@nosklo +1 флаг для Ненужной хамства. – Keng

+0

@nosklo Да, это так. Виноват. Не случайный attemp :) – Ockonal

ответ

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 
+0

Как я могу это сделать? У меня нет времени изучать regexp сейчас :( – Ockonal

+2

@ Ock: это о том, как использовать Python, а не регулярное выражение. – katrielalex

+0

Возможно, да. Я просто переработал какой-то проект, а не мой. У меня нет времени изучать Python глубоко Пожалуйста, помогите мне. – Ockonal

Смежные вопросы