python正则如何匹配除某个字符串以外的任意字符?

a='....<b>2012<b> <b>2033<b>.....'

匹配除2012这个字符串以外的任意字符?

第1个回答  推荐于2018-01-02
首先,「匹配除2012这个字符串以外的任意字符?」语义不明,你是想将其从原字符串中删除还是要匹配2012以外的年份?
姑且认为你的意思是后者,也即在一个特定模式里排除某些匹配的实例。
方法一、先预处理,将要匹配的字符串里的2012替换成不可能出现的字符串,然后再进行匹配处理,最后再将其替换回2012。
方法二、使用不匹配的前向断言 (?! ...):
import re

s = '....<b>0033<b> <b>1033<b> <b>2012<b> <b>2033<b> <b>2043<b> <b>3033<b>.....'
p = re.compile('<b>(?!2012)[0-9]{4}<b>')
for m in re.finditer(p, s):
print m.group()
可以匹配出
<b>0033<b>
<b>1033<b>
<b>2033<b>
<b>2043<b>
<b>3033<b>
而没有'<b>2012<b>'本回答被提问者和网友采纳
第2个回答  2013-03-10
你要的效果是删除2012?

>>> a='....<b>2012<b> <b>2033<b>.....'
>>> import re
>>> re.sub("2012", "", a)
'....<b><b> <b>2033<b>.....'
相似回答