为什么我的python正则表达式不起作用?

时间:2014-01-10 08:33:22

标签: python regex

我想要替换多次出现的所有字符,我使用Python的re.sub,我的正则表达式看起来像data=re.sub('(.)\1+','##',data),但没有发生任何事情......
这是我的文字:

  

文字

     

※※※※※※※※※※※※※※※※※第一章※※※※※※※※※※※※※※※※※

     

这是开始......

2 个答案:

答案 0 :(得分:3)

您需要在此处使用原始字符串,1被解释为八进制,然后在字符串中使用其等效整数的ASCII值。

>>> '\1'
'\x01'
>>> chr(01)
'\x01'
>>> '\101'
'A'
>>> chr(0101)
'A'

使用原始字符串来解决此问题:

>>> '(.)\1+'
'(.)\x01+'
>>> r'(.)\1+'  #Note the `r`
'(.)\\1+'

答案 1 :(得分:1)

使用原始字符串,因此正则表达式引擎解释反斜杠而不是Python解析器。只需在字符串前加r

data=re.sub(r'(.)\1+', '##', data)
            ^ this r is the important bit

否则,\1被解释为字符值1而不是反向引用。