-1

我有一个文件,在那个emailid,电话号码和我的出生日期在那里。在python中使用正则表达式,如何一一找到3个字段?所需的输出看起来像

Emailid: x@gmail.com
Phoneno: 1234567890
dateofbirth: xx-xx-xx

我知道如何单独查找字段。但我不知道如何一次找到 3 个。下面的代码段显示了如何从文件中找到电子邮件 ID。此代码输出看起来像

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'))
4

1 回答 1

1

您可以使用以下方法遍历字符串中 RE 模式的所有非重叠匹配finditer

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'))
于 2013-03-28T05:02:00.090 回答