4

我正在尝试使用 re 模块验证名称字段。

\w不匹配非 ascii 字符,例如à.

似乎在许多其他正则表达式引擎中,解决方案本来是\p{L},但在 python 中不支持它。什么是合适的等价物?

更新:

这与围绕该主题的其他问题不同,因为我正在寻找\w不是使用默认re.UNICODE标志获得的 unicode 替代方案(因为该标志也\w匹配数字和下划线)。

4

4 回答 4

1

我相信您需要使用 UNICODE 修饰符为字符类启用 unicode 支持。

regexRef = re.compile("\w", re.UNICODE)

看看这是否有助于匹配那些非 ASCII 字符。

于 2013-03-03T19:21:03.317 回答
1

[^\d\s_]符合你想要的吗?

于 2013-03-06T03:59:00.393 回答
1

[^\W0-9_]对我有用,与一起使用时re.UNICODE

于 2013-03-06T08:16:25.143 回答
0

将 Unicode 字符串传递给re模块并启用re.UNICODE标志,例如:

# -*- coding: utf-8 -*-
import re

print(re.findall(ur"\w+", ur"\w does match à.", flags=re.UNICODE))
于 2013-03-03T19:29:03.773 回答