我只想从满足条件的字符串中找到那些电子邮件地址。
条件:电子邮件必须使用小写的第一个字符。另外:
它不能包含子字符串。
Example : abc123@xyz.com #Satisfies
Example : Abc123@xyz.com #Not Satisfies
代码:
import re
str = '''
FIRSTEMAIL@gmail.com
secondemail@gmail.com
Thirdemail@gmail.com
fourthEmail@gmail.com
'''
pattern = r'[a-z]+[A-Za-z0-9]+[@]+[a-z]+\.+[a-z]+'
output = re.findall(pattern,str)
print output
预期输出:
secondemail@gmail.com
fourthEmail@gmail.com
实际输出:
secondemail@gmail.com
hirdemail@gmail.com #Problem
fourthEmail@gmail.com
答案 0 :(得分:1)
就这么简单(您需要在小写字母之前添加单词边界\b
)
\b[a-z]\S*@\S+
\b
确保单词和非单词字符之间的边界,并且是零宽度的断言(表示它自己不消耗任何字符)。
答案 1 :(得分:0)
不仅可以确保首字母为小写字母,还可以验证电子邮件是否符合预期输出:
pattern = r'\b[a-z]\S*@\S+\.\S+'
\b[a-z]
确保首字母小写。示例:a
\S*@
确保字符串的末尾具有 @ 。示例:a @
\S+\.
确保字符串的长度至少应为1,并且末尾必须为。。示例a @ gmail。
\S+
确保字符串的长度必须至少为1。示例a@gmail.com