-1

そのemailid、phoneno、および生年月日がそこにあるファイルがあります。Pythonで正規表現を使用して、3つのフィールドを1つずつ見つける方法は? 目的の出力は次のようになります

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

1 に答える 1

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