2015-11-02 52 views
5

我正在讀一本書,看到噸的例子是這樣的:[ w d]中不 d是多餘的?

(?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子集。
那麼,那些「\ d」是多餘的嗎?請有人確認我的理解是正確的,因爲這驅使了我。

+0

也許他們正在專門尋找*結尾的單詞,即smith7或jones5。 –

+2

@JohnGordon如果是這樣的話,他們會在分組外部使用'\ d'標記,而不是在裏面。 –

+2

這表明這在任何情況下都是毫無意義的練習:http://davidcel.is/posts/stop-validating-email-addresses-with-regex/ – davejagoda

回答

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字符屬性數據庫中分類爲字母數字的任何字符匹配。

+0

爲什麼鏈接到Perl文檔以獲取Python問題? – chepner

+0

https://docs.python.org/2/library/re.html的第一句特別提到了Perl的正則表達式: 該模塊提供了類似於Perl中的正則表達式匹配操作。 – davejagoda

+0

@davejagoda:不,他們看起來很相似,但他們不一樣。不要將一種語言的參考用於另一種語言。 – nhahtdh

相關問題