Python正则表达式识别中文数字

Python正则表达式识别中文数字,python,regex,utf-8,Python,Regex,Utf 8,使用Python2.7 我正在尝试编写一个正则表达式,它可以识别任何utf-8数字0-9(不仅仅是阿拉伯数字,还有简体中文)和任何unicode单词字符 例如,我有: 4_1424336,P-九 (九 是中文(9) 我想返回: 9_9999999,A-9 我目前的职能是: def multiple_replace(myString): myString = re.sub(ur'(?u)[^\W_*\d]', u'A', myString) myString = re.sub

使用Python2.7

我正在尝试编写一个正则表达式,它可以识别任何utf-8数字0-9(不仅仅是阿拉伯数字,还有简体中文)和任何unicode单词字符

例如,我有:

4_1424336,P-九 
(九 是中文(9)

我想返回:

9_9999999,A-9
我目前的职能是:

def multiple_replace(myString):
    myString = re.sub(ur'(?u)[^\W_*\d]', u'A', myString)
    myString = re.sub(ur'(?u)[\d]', u'9', myString)
    return myString
编辑:

也试过…同样的结果

def multiple_replace(myString):
    myLetters_regex = re.compile(r'[^\W\d_]', re.UNICODE)
    myNumbers_regex = re.compile(r'[\d]', re.UNICODE)
    myString = myNumbers_regex.sub('9', myString)
    myString = myLetters_regex.sub('A', myString)
    return myString
我得到

9_9999999,A-A (i.e. 九 is recognized is flagged as an 'A' instead of a '9')
因此,我的问题是:

1) 是否有其他方法写入字母数字中不包含数字

2) 关于使用python正则表达式识别中文数字,我缺少什么吗?

Check,一个绑定到正则表达式引擎的python


有关数字:

re.sub(ur'\p{N}', '9')
信件:

re.sub(ur'\p{L}', 'A')

对于#2,请在定义正则表达式时尝试设置
re.UNICODE
标志。继续挖掘#1-一旦
\W*\d
\d
类能够识别unicode,那么排除
\W*\d
的字符类可能是最好的选择。虽然
*
通常不被认为是单词字符,所以我认为您不需要明确禁止它。好了,1的答案是否定的。字符类是固定的。不过,为了方便起见,你可以自己定义。请看这篇文章:这个角色的代码点是什么?@Peter…请看OP(已编辑)。re.UNICODE标志没有什么区别。我知道之前在python re模块中发现过错误…这可能是一个错误吗?嗯…你不能在Windows机器上安装吗?我已经尝试过(甚至在Cygwin中进行了一轮测试——结果是出现了一系列错误,并且“error:command'gcc'失败,退出状态为1”)。查看GitHub回购协议并没有带来多少关于这方面的见解。。。