使用抛光字符时不兼容

时间:2016-01-31 21:43:17

标签: python regex

我需要用波兰字符替换字符串。

我尝试了以下代码:

k = 'aąkkk cdkkk aą xskkk'
odp = re.sub('(?<!aą|cd)kkk', '***', k)
print (odp)

但不幸的是它会产生以下错误:

  

文件“/usr/lib/python2.7/re.py”,第244行,_compile引发错误,v#无效表达式

问题在于抛光字符,因为当我用'a'字符替换'''字符时,它可以正常工作:

k = 'aąkkk cdkkk aą xskkk'
odp = re.sub('(?<!aa|cd)kkk', '***', k)
print (odp)

答案是:aą*** cdkkk aą xs***

我尝试使用UNICODE但它仍然不起作用:

a = re.compile(ur'(?<!\u0061\u0105|\u0063\u0064)kkk', re.UNICODE)
a
k = u'aąkkk cdkkk aą xskkk'
odp = a.sub('***', k)
print (odp)

以上答案是:aÄ*** cdkkk aÄ xs***

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你想要的结果并不是很清楚。如果你想要'aą*** cdkkk aą xs***',那么你可以这样做:

>>> k = u'aąkkk cdkkk aą xskkk'
>>> re.sub(u'(?<!(aą|cd))kkk', '***', k, re.UNICODE)
'aąkkk cdkkk aą xs***'