在[\ w \ d]中不是多余的吗?

时间:2015-11-02 19:53:15

标签: python regex

我正在读一本书,看到大量这样的例子:

(?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冗余了吗?请有人确认我的理解是正确的,因为这会让我感到疯狂。

1 个答案:

答案 0 :(得分:5)

是的,这是多余的,普通\w也可以正常工作。见https://docs.python.org/2/library/re.html

  

\d

     

未指定UNICODE标志时,匹配任何十进制数字;这相当于集合[0-9]。使用UNICODE,它将匹配Unicode字符属性数据库中分类为十进制数字的任何内容。

     

\w

     

如果未指定LOCALEUNICODE标志,则匹配任何字母数字字符和下划线;这相当于集合[a-zA-Z0-9_]。对于LOCALE,它将匹配集[0-9_]以及为当前区域设置定义为字母数字的任何字符。如果设置了UNICODE,则会匹配字符[0-9_]以及Unicode字符属性数据库中分类为字母数字的字符。