簡體   English   中英

是否可以使[a-zA-Z] Python正則表達式模式匹配並替換非ASCII Unicode字符?

[英]Can the [a-zA-Z] Python regex pattern be made to match and replace non-ASCII Unicode characters?

在下面的正則表達式中,我希望字符串中的每個字符都替換為“X”,但它不起作用。

在Python 2.7中:

>>> import re
>>> re.sub(u"[a-zA-Z]","X","dfäg")
'XX\xc3\xa4X'

要么

>>> re.sub("[a-zA-Z]","X","dfäg",re.UNICODE)
u'XX\xe4X'

在Python 3.4中:

>>> re.sub("[a-zA-Z]","X","dfäg")
'XXäX'

有可能以某種方式'配置'[a-zA-Z]模式以匹配'ä','ü'等? 如果無法做到這一點,我如何在方括號之間創建一個類似的字符范圍模式,包括通常的“完整字母”范圍內的Unicode字符? 我的意思是,例如,在像德語這樣的語言中,'ä'將被放置在字母表中接近'a'的某個位置,因此可以預期它將包含在'az'范圍內。

你可以用

(?![\d_])\w

使用Unicode修飾符。 (?![\\d_])限制\\w速記類,因為它無法匹配任何數字( \\d )或下划線。

請參閱正則表達式演示

Python 3演示

import re
print (re.sub(r"(?![\d_])\w","X","dfäg"))
# => XXXX

至於Python 2

# -*- coding: utf-8 -*-
import re
s = "dfäg"
w = re.sub(ur'(?![\d_])\w', u'X', s.decode('utf8'), 0, re.UNICODE).encode("utf8")
print(w)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM