我正在使用正則表達式編寫python程序來查找電子郵件地址。每當我嘗試使用圓括號進行分組時,re.findall函數都會給出錯誤的輸出。任何人都可以指出錯誤/建議一個替代解決方案?re.findall在Python中使用分組無法正則表達式
這裏有兩個代碼片段來解釋 -
pat = "[\w]+[ ]*@[ ]*[\w]+.[\w]+"
re.findall(pat, '[email protected] .rtrt.. [email protected] ')
使輸出
['[email protected]', '[email protected]']
但是,如果我用這個表達式分組和修改代碼,
pat = "[\w]+[ ]*@[ ]*[\w]+(.[\w]+)*"
re.findall(pat, '[email protected] .rtrt.. [email protected] ')
輸出爲
['.com', '.com']
爲了確認正則表達式的正確性,我在http://regexpal.com/中用相同的輸入字符串嘗試了這個特定的正則表達式(在第二個例子中),並且兩個電子郵件地址都匹配成功。
+1用於極好被問到的問題。 – 2012-03-17 08:10:49
你已經在所有你不應該擁有的地方使用過角色類,並且沒有使用你應該擁有(或使用過逃逸)的角色類。此外,該正則表達式在大量有效地址上失敗,如'anu.agg @ test.com'。我期望在'@'周圍允許空格(這當然是無效的)是有意完成的? – 2012-03-17 08:11:17