簡體   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