gpt4 book ai didi

python - [a-zA-Z] Python 正则表达式模式可以匹配和替换非 ASCII Unicode 字符吗?

转载 作者:太空狗 更新时间:2023-10-30 01:14:03 25 4
gpt4 key购买 nike

在下面的正则表达式中,我想用“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”的位置,因此人们会期望它包含在“a-z”范围内。

最佳答案

你可以使用

(?![\d_])\w
[^\W\d_]

如果在 Python 2.x 中使用,re.U/re.UNICODE 修饰符是必需的。 (?![\d_]) 前瞻限制了 \w 速记类,因为它无法匹配任何数字 (\d) 或下划线。 [^\W\d_] 模式匹配除数字和下划线以外的任何字符字符。

参见 regex demo .

A Python 3 demo :

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

print (re.sub(r"[^\W\d_]","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)

关于python - [a-zA-Z] Python 正则表达式模式可以匹配和替换非 ASCII Unicode 字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33127900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com