一个可以识别大部分电子邮件地址的正则表达式
当大家在用pandas处理邮箱号码或者其他带有符号的字符串的时候,有可能会需要将字符串的几部分分来储存。
举例1:识别大部分电子邮件的正则表达式
data="""DAVE dave@google.com
dsd steve@gmail.com
dsddsdaw rob@gmail.com
wes np.nan"""
pattern=r'[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}'
#flags=re.IGNORECASE 使用正则表达式不区分大小写
regex=re.compile(pattern,flags=re.IGNORECASE)
print(regex.findall(data))
输出为:
['dave@google.com', 'steve@gmail.com', 'rob@gmail.com']
让我们再来详细聊一下pattern中的语句的表达式含义:
pattern=r'[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}'
pattern=r’[A-Z0-9._%±]+@[A-Z0-9.-]+.[A-Z]{2,4}’
[A-Z0-9]指的是字母从A到Z,从0到9,英文句号,下划线,百分号,中括号外的+意思为中括号里的东西可以重复多次#举例来说,
比如:dave@google.com中,@前的dave就对应此处,第二部分是@后.前的部分,第三部分是.后的部分
[A-Z]{2-4}意味着 识别字母A-Z,个数为2个到四个,我们最后一般不是com 就是cn 所以足够使用