Как заставить квантификатор регулярных выражений работать как положено? - PullRequest
1 голос
/ 14 апреля 2020

В настоящее время я пытаюсь сопоставить всю электронную почту с указанными c префиксами (то, что предшествует @), и я не могу понять это. Прямо сейчас у меня есть регулярное выражение, которое с используемыми онлайн-инструментами должно работать, но в python оно соответствует только первой части письма

import re
test = "info@c.com test2@c.com support@c.com"
print(re.findall('(info|contact|support|help|sales)+@\w+\.{1}\w+', test))

Возвращает

['info', 'support']

Ожидаемый результат

['info@c.com', 'support@c.com']

1 Ответ

0 голосов
/ 14 апреля 2020

findall

Возвращает все непересекающиеся совпадения шаблона в строке в виде списка строк. Строка сканируется слева направо, и совпадения возвращаются в указанном порядке. Если в шаблоне присутствует одна или несколько групп, вернуть список групп; это будет список кортежей, если шаблон имеет более одной группы. Пустые совпадения включены в результат.

Итак, давайте изменим ваше регулярное выражение следующим образом:

import re
test = "info@c.com test2@c.com support@c.com"
print(re.findall('((?:info|contact|support|help|sales)+@\w+\.{1}\w+)', test))

output:

['info@c.com', 'support@c.com']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...