我正在读一本书,看到大量这样的例子:
(?P<email>
[\w\d.+-]+ # username
@
([\w\d.]+\.)+ # domain name prefix
(com|org|edu) # limit the allowed top-level domains
)
由于\w
表示[a-zA-Z0-9_]
,\d
表示[0-9]
,\d
是\w
的子集。
那么,那些&#34; \ d&#34冗余了吗?请有人确认我的理解是正确的,因为这会让我感到疯狂。
答案 0 :(得分:5)
是的,这是多余的,普通\w
也可以正常工作。见https://docs.python.org/2/library/re.html
\d
未指定
UNICODE
标志时,匹配任何十进制数字;这相当于集合[0-9]
。使用UNICODE
,它将匹配Unicode字符属性数据库中分类为十进制数字的任何内容。
\w
如果未指定
LOCALE
和UNICODE
标志,则匹配任何字母数字字符和下划线;这相当于集合[a-zA-Z0-9_]
。对于LOCALE
,它将匹配集[0-9_]
以及为当前区域设置定义为字母数字的任何字符。如果设置了UNICODE
,则会匹配字符[0-9_]
以及Unicode字符属性数据库中分类为字母数字的字符。