繁体   English   中英

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

[英]Why does my python regex not work?

我想替换所有不止一次出现的字符,我使用了Python的re.sub,而我的正则表达式看起来像这样data=re.sub('(.)\\1+','##',data) ,但是什么也没有发生了...
这是我的文字:

文本

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

这是开始...

您需要在此处使用原始字符串,将1解释为八进制,然后在字符串中使用以整数等价形式显示的ASCII值。

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM