2015-04-24 2 views
-1
re.compile(regex1) 
r1=r.sub(something,text) 
re.compile(regex2) 
r2=r.sub(something,text) 
re.compile(regex3) 
r3=r.sub(something,text) 

Так что я хочу изменить текст, основанный на трех регулярных выражениях .. но я не знаю, как применить три из них и воспроизвести его как одно целое. Может кто-нибудь, пожалуйста, помогите мне с тем, как идти об этомКак петля с регулярным выражением

+1

пример был бы лучше. –

+0

Какие изменения вы хотите сделать в своей строке? – Kasramvd

+0

, например, заменить слова, заканчивающиеся на первый случай: ing с кольцом, второй случай 2: заменить 0 на кольцо: случай 3: заменить> на кольцо. То, что я пытаюсь сказать, три случая могут быть разными, но то, что его заменяют, одинаково – ananymous59

ответ

0

Если ваши регулярные выражения довольно просто, вы можете просто создать дизъюнкции из вашего нескольких регулярных выражений и заменить их все сразу:

>>> text = "something with 0 and >" 
>>> re.sub(r"ing|0|>", "ring", text) 
'somethring with ring and ring' 

В качестве альтернативы , вы можете использовать цикл или просто заменять их один за другим, но не забудьте заменить текст в результате предыдущей замены, а не в исходном тексте!

Т.е., используя свой псевдо-код, он должен быть чем-то вроде этого:

r = re.compile(regex1) 
r1 = r.sub(something, text) 
re.compile(regex2) 
r2 = r.sub(something, r1) # use r1 here 
re.compile(regex3) 
r3 = r.sub(something, r2) # and r2 here 

Или просто присвоить обратно к исходной text переменной:

for x in ["ing", "0", ">"]: 
    text = re.sub(x, "ring", text) 
print text 

(Конечно, вы должны обязательно замените ing перед заменой других вещей на ring, в противном случае ing в ring будет заменен снова!)

+0

tnx много, что я искал ... извините, мой вопрос был не ясен – ananymous59

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