我有一个文件,在那个emailid,phoneno和我的dateofbirth就在那里。在python中使用正则表达式,如何逐个查找3个字段?所需的输出类似于
Emailid: x@gmail.com
Phoneno: 1234567890
dateofbirth: xx-xx-xx
我知道如何单独找到这些字段。但我不知道如何一次找到3个。下面的代码片段显示了如何从文件中找到emailid。此代码输出类似于
Emaildid: x@gmail.com
import sys,re
pattern=r'''(?P<emailid>[a-zA-Z\.]*\@[a-zA-Z]*\.c[a-zA-Z]*)'''
regobj = re.compile(pattern, re.VERBOSE)
for line in sys.stdin:
results= regobj.finditer(line)
for result in results:
sys.stdout.write("%s\n"%result.group('emailid'))
答案 0 :(得分:1)
您可以使用finditer
方法迭代字符串中RE模式的所有非重叠匹配,如下所示:
import sys,re
pattern = re.compile(r'''(?P<emailid>[a-zA-Z.]*@[a-zA-Z]*\.c[a-zA-Z]*).*?(?P<phone>\(?[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}).*?(?P<dob>[0-9]{2}-[0-9]{2}-[0-9]{2})''', re.DOTALL)
for result in pattern.finditer(sys.stdin.read()):
sys.stdout.write("Emailid: %s\n"%result.group('emailid'))
sys.stdout.write("Phoneno: %s\n"%result.group('phone'))
sys.stdout.write("dateofbirth: %s\n"%result.group('dob'))