我在使用正则表达式替换字符串时出现问题,似乎无法让它工作
string = "<font x=''>test</font> <font y=''>test2</font> <font z=''>test3</font>"
if re.search("(<font .*?>)", string, re.IGNORECASE):
r = re.compile(r"<font (?P<name>.*?)>.*?</font>", re.IGNORECASE)
string = r.sub(r'', string)
由于某些原因,所有正则表达式都删除整个字符串''
。它应该以{{1}}
答案 0 :(得分:5)
在这里,
>>> import re
>>> string = "<font x=''>test</font> <font y=''>test2</font> <font z=''>test3</font>"
>>> if re.search("(<font .*?>)", string, re.IGNORECASE):
... r = re.compile(r"</?font.*?>", re.IGNORECASE)
... string = r.sub(r'', string)
...
>>> string
'test test2 test3'
模式说明:
</?font.*?>
此正则表达式将匹配所有打开和关闭字体标记。在?
之后添加/
会将前一个/
字符设为可选字段。.*?
将尽可能短的匹配。 ?
之后的*
会强制正则表达式引擎执行尽可能短的匹配,因为默认情况下*
是贪婪的。它可能会尽可能多地消耗掉这些字符。>
按字面意思匹配>
符号。re.IGNORECASE
称为不区分大小写的修饰符。 答案 1 :(得分:0)
>([^<]*)<\/
您可以将其用作
y="<font x=''>test</font> <font y=''>test2</font> <font z=''>test3</font>"
x=re.findall(r"(?<=>)([^<]*)(?=<\/)",y)
str=" ".join(x)
print str
参见演示