使用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正则表达式识别中文数字是否缺少一些东西?
答案 0 :(得分:0)
检查Ponyguruma,一个绑定到Oniguruma正则表达式引擎的Python。
对于数字:
re.sub(ur'\p{N}', '9')
对于信件:
re.sub(ur'\p{L}', 'A')