2012-10-13 2 views
1

Я пытаюсь использовать подфункцию в python, но не могу заставить ее работать. До сих пор яPython Regexp Sub Function

content = '**hello**' 
content = re.sub('**(.*)**', '<i>(.*)</i>', content) 

Я пытаюсь сделать

**hello** 

заменить

<i>hello</i> 

Любые идеи?

+0

что ваш ожидаемый результат что-то вроде '** Foo ** бар **' –

ответ

3

Вам нужно бежать * характер, а также использовать функцию замены:

content = '**hello**' 
content = re.sub('\*\*(.*)\*\*', lambda p : '<i>%s</i>' % p.group(1), content) 

В качестве альтернативы, вы можете использовать именованные группы.

content = re.sub('\*\*(?P<name>.*)\*\*', '<i>\g<name></i>', '**hello**') 

Или как лучшая альтернатива, пронумерованные группы.

content = re.sub('\*\*(.*)\*\*', '<i>\\1</i>', '**hello**') 
+0

Спасибо, но он заменяет (. *) вместо привет MichaelH

+0

это не дает требуемого ответ. –

+0

@AshwiniChaudhary, спасибо исправлено –