正则表达式:检索匹配的模式

时间:2018-11-29 03:55:23

标签: python regex

我正在尝试从电子邮件列表中推断出模式,以查看电子邮件ID是否遵循firstname.lastname或lastname.firstname模式。我可以使用带有以下可能模式的“或”来匹配电子邮件

re.match("|".join([regex_pat1, regex_pat2]), email)

一旦找到匹配项,如何知道列表中的哪个正则表达式模式字符串与目标电子邮件匹配?

编辑:示例

import re
email = "sam.rohn@gmail.com"

patt = ["sam.rohn@gmail.com", "rohn.sam@gmail.com"]

re.match("|".join(patt), email)

这给了我一个匹配对象 <_sre.SRE_Match对象; span =(0,30),match='sam.rohn@gmail.com'>

我想知道的是我的“ patt”列表中的哪一个模式匹配

2 个答案:

答案 0 :(得分:1)

您可以使用括号将模式括起来,并使用匹配组来标识您的匹配项,如

patt = ["(sam\.rohn@gmail\.com)", "(rohn\.sam@gmail\.com)"]

请参阅here

答案 1 :(得分:1)

老实说,您的问题使我感到困惑,因为如果您成功匹配,则模式应等于print(email in patt)。并且您可以通过email检查它是否遵循firstname.lastname或lastname.firstname模式,因为您有patt.

在正则表达式中,\n将匹配行终止符(.)之外的所有字符。如果只想匹配\.,则添加反斜杠[.]#(not recommended) Council NPS EASE OSAT 0 CouncilA 5 99 2 1 CouncilB 0 4 2 2 CouncilC 4 1 5 3 CouncilA 1 4 5 4 CouncilB 3 1 3 5 CouncilC 1 4 3 6 CouncilA 4 1 99 7 CouncilB 4 4 1 8 CouncilC 3 3 3 9 CouncilA 2 2 1 10 CouncilB 4 99 4 11 CouncilC 2 2 5