我正在尝试使用 re 模块验证名称字段。
\w
不匹配非 ascii 字符,例如à
.
似乎在许多其他正则表达式引擎中,解决方案本来是\p{L}
,但在 python 中不支持它。什么是合适的等价物?
更新:
这与围绕该主题的其他问题不同,因为我正在寻找\w
不是使用默认re.UNICODE
标志获得的 unicode 替代方案(因为该标志也\w
匹配数字和下划线)。
我正在尝试使用 re 模块验证名称字段。
\w
不匹配非 ascii 字符,例如à
.
似乎在许多其他正则表达式引擎中,解决方案本来是\p{L}
,但在 python 中不支持它。什么是合适的等价物?
更新:
这与围绕该主题的其他问题不同,因为我正在寻找\w
不是使用默认re.UNICODE
标志获得的 unicode 替代方案(因为该标志也\w
匹配数字和下划线)。
我相信您需要使用 UNICODE 修饰符为字符类启用 unicode 支持。
regexRef = re.compile("\w", re.UNICODE)
看看这是否有助于匹配那些非 ASCII 字符。
[^\d\s_]
符合你想要的吗?
[^\W0-9_]
对我有用,与一起使用时re.UNICODE
将 Unicode 字符串传递给re
模块并启用re.UNICODE
标志,例如:
# -*- coding: utf-8 -*-
import re
print(re.findall(ur"\w+", ur"\w does match à.", flags=re.UNICODE))