簡體   English   中英

python xxx中的正則表達式

[英]Regular expression in python xxx

import re
email="skoal.com abc@com 123@abx.ty.com2 Manan.5587@gmail.com   abc@bhe.com"
print("Email Matches",len(re.findall("[\w._%+-]{1,20}@[\w.-]{2,20}.[A-Za-z]{2-3}",email)))

此代碼應該能夠驗證正確輸入的電子郵件地址,但它沒有這樣做,無法找到錯誤作為新學習者需要幫助

正在學習這個在線代碼似乎是正確的,但我想要的輸出不是我得到的

我總是得到輸出為 0

有幾個問題。

首先使用原始字符串r"" 如果沒有 r,您將錯誤地轉義值。

其次,在 dot 上匹配時. ,你應該逃避它。 否則將匹配任何字符。

最后[A-Za-z]{2-3}是不正確的。 你需要做[A-Za-z]{2,3}

# incorrect
"[\w._%+-]{1,20}@[\w.-]{2,20}.[A-Za-z]{2-3}"

# correct
r"[\w._%+-]{1,20}@[\w.-]{2,20}\.[A-Za-z]{2,3}"

例子:

import re
emails = "skoal.com abc@com 123@abx.ty.com2 Manan.5587@gmail.com   abc@bhe.com"
regex = r"[\w._%+-]{1,20}@[\w.-]{2,20}\.[A-Za-z]{2,3}"

print("Email Matches:", re.findall(regex, emails))
Email Matches: ['123@abx.ty.com', 'Manan.5587@gmail.com', 'abc@bhe.com']

作為一般性評論,在編寫正則表達式時,從簡單開始,然后逐步提高。 調試時,先測試r"[\\w._%+-]{1,20}" ,然后r"[\\w._%+-]{1,20}@[\\w.-]{2,20}"等,直到您獲得完整的正則表達式,並驗證您在每次迭代中都符合您的期望。

我正在寫答案,因為我沒有評論權限。 以下工作:

email="skoal.com abc@com 123@abx.ty.com2 Manan.5587@gmail.com   abc@bhe.com"

print("Email Matches",len(re.findall("[\w._%+-]{1,20}@[\w.-]{2,20}.[A-Za-z]{2,3}",email)))

注意 {2,3} 而不是 {2-3}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM