2015-06-19 96 views
2

我剛剛開始學習Python中的Regex。我正在通過此代碼從字符串中提取電子郵件地址。Python正則表達式查詢

str = 'purple [email protected], blah monkey [email protected] blah dishwasher' 
emails1 = re.findall(r'[\w\.-][email protected][\w\.-]+', str) 
emails2 = re.findall(r'[\w.-][email protected][\w.-]+', str) 

電子郵件1和電子郵件2的代碼是否有區別?我在一個字符串上進行了測試,兩者都輸出相同的結果。

這是我第一篇文章。請不要介意我的帖子是否符合任何標準。謝謝。

回答

4

我看到的唯一區別是.\.,這通常確實有所作爲。

.代表「除換行符之外的任何字符」,而\.代表字面點。然而,在像[abcd.]這樣的字符類中,這意味着「以下任何一個」,諸如.之類的一些字符是文學作品。由於.都屬於特性類,所以二者沒有區別。

雖然你應該在字符類中跳過-,因爲它代表的字符範圍爲[a-z]。它適用於你的案例,因爲它是班級中的最後一個角色,但你不想在某個時候忘記它,後來又想知道「怎麼回事」。

+0

感謝您的詳細解答。所以它沒有任何區別。 – Vinay