正则表达式为非ASCII字符

fcc*_*lho 1 python regex unicode python-3.x

在Python 3中使用正则表达式考虑此代码段:

>>> t = "Meu cão é #paraplégico$."
>>> re.sub("[^A-Za-z0-9 ]","",t,flags=re.UNICODE)
'Meu co  paraplgico'
Run Code Online (Sandbox Code Playgroud)

为什么删除非ASCII字符?我试过没有国旗,它都是一样的.

作为奖励,任何人都可以在Python 2.7上使用它吗?

Yeo*_*nho 5

[^A-Za-z0-9 ]使用blank("")替换非字母数字字符().非ASCII字符不在AZ,az或0-9之间,因此它们被替换.

您可以匹配所有单词字符,如下所示:

>>> t = "Meu cão é #paraplégico$."
>>> re.sub("[^\w ]","",t, flags=re.UNICODE)
>>> 'Meu cão é paraplégico'
Run Code Online (Sandbox Code Playgroud)

或者您可以将字符添加到正则表达式中,如下所示:[^A-Za-z0-9ãé ].

  • 在许多(其他)语言中,您可以使用Unicode属性来定义`[^\p {Alpha}]`的正则表达式.有关Python中的替代方法,请参阅http://stackoverflow.com/questions/1832893/python-regex-matching-unicode-properties. (2认同)