регулярное выражение: получить, какой шаблон соответствует - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь вывести шаблон из списка электронной почты, чтобы узнать, соответствует ли идентификатор электронной почты шаблону namename.lastname или lastname.firstname.Я могу сопоставить электронную почту, используя 'или' с возможными шаблонами, как показано ниже

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

Как только я получу совпадение, как я узнаю, какая строка шаблона регулярного выражения из списка соответствует целевой электронной почте?

edit: пример

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

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

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

Это дает мне объект соответствия <_sre.SRE_Match object;span = (0, 30), match='sam.rohn@gmail.com '>

Я хочу знать, какой из моих шаблонов из моего списка' patt 'соответствует

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Честно говоря, ваш вопрос смутил меня, потому что, если вы успешно сопоставите, шаблон должен быть равен email.И вы можете проверить, следует ли он шаблону namename.lastname или lastname.firstname через print(email in patt), поскольку у вас есть email и patt.

В регулярном выражении . будет соответствовать всем символам, кроме строкитерминаторы (\n).Если вы хотите соответствовать только ., добавьте обратную косую черту \. или [.]#(not recommended)

0 голосов
/ 29 ноября 2018

Вы можете использовать круглые скобки, чтобы заключить ваши шаблоны и идентифицировать ваше соответствие с соответствующей группой, как в

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

см. здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...