[azAZ]Python regex模式可以用来匹配和替换nonASCII Unicode字符吗?

2024-04-19 00:18:56 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面的正则表达式中,我希望字符串中的每个字符都替换为“X”,但它不起作用。在

在Python 2.7中:

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

或者

^{pr2}$

在Python 3.4中:

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

是否可以以某种方式“配置”[a-zA-Z]模式以匹配“ä”、“ü”等。?如果不能做到这一点,我如何在方括号之间创建一个类似的字符范围模式,在通常的“完整字母表”范围内包含Unicode字符?我的意思是,在像德语这样的语言中,ä会被放在字母表中靠近a的地方,所以人们会期望它被包含在a-z范围内。在


Tags: 字符串importredf方式unicode模式字符
1条回答
网友
1楼 · 发布于 2024-04-19 00:18:56

你可以用

(?![\d_])\w

使用Unicode修饰符。(?![\d_])展望限制了\w速记类,因为它不能匹配任何数字(\d)或下划线。在

regex demo

一个Python 3 demo

^{pr2}$

至于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)

相关问题 更多 >