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

时间:2013-11-30 22:30:57

标签: python regex utf-8

使用python 2.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')

所以,我的q是:

1)有没有其他方法可以将\ W写入不包括字母数字中的数字?

2)使用python正则表达式识别中文数字是否缺少一些东西?

1 个答案:

答案 0 :(得分:0)

检查Ponyguruma,一个绑定到Oniguruma正则表达式引擎的Python。


对于数字:

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

对于信件:

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