python正则表达式标记

chn*_*net 0 python regex expression

我想改变这个字符串

<p><b> hello world </b></p>. I am playing <b> python </b>

至:

<bold><bold>hello world </bold></bold>, I am playing <bold> python </bold>

我用了:

import re 

pattern = re.compile(r'\<p>(.*?)\</p>|\<b>(.*?)\</b>')

print re.sub(pattern, r'<bold>\1</bold>', "<p><b>hello world</b></p>. I am playing <b> python</b>")
Run Code Online (Sandbox Code Playgroud)

它没有输出我想要的,它抱怨错误:无与伦比的组

它适用于这种情况:

re.sub(pattern, r'<bold>\1</bold>', "<p>hello world</p>. I am playing <p> python</p>")
Run Code Online (Sandbox Code Playgroud)

<bold> hello world </bold>.我在玩<bold> python</bold>

Sen*_*ran 5

如果你选择不使用正则表达式,那么它很简单:

d = {'<p>':'<bold>','</p>':'</bold>','<b>':'<bold>','</b>':'</bold>'}
s = '<p><b> hello world </b></p>. I am playing <b> python </b>'
for k,v in d.items():
    s = s.replace(k,v)
Run Code Online (Sandbox Code Playgroud)