регулярное выражение избавиться от групп захвата
У меня есть следующее регулярное выражение:
(?i)pw+@t(-)?w+(-w+)?(.w+)?.at который соответствует данным типа
papFoo@t-bar.at
PapBar@tfoo.ring.at
Как я могу переписать это регулярное выражение, чтобы использовать некаптчурирующие группы?
-
[?i]pw+@t[-]?w+[-w+]?[.w+]?.atбольше не будет соответствовать никаким результатам -
(?:?i)pw+@t(?:-)?w+(?:-w+)?(?:.w+)?.atто же самое здесь
То есть (?i)p должно быть записано как ?ip я думаю, но на https://regex101.com я получаю ошибки только при попытке использовать (?:?i)pw+@t(?:-)?w+(?:-w+)?(?:.w+)?.at с некаптчуринговыми группами.
В конце концов python3 должен оценить регулярное выражение.
2 ответа:
Первая "группа",
(?i), не является группой захвата, это набор флагов, включающих нечувствительность к регистру для выражения. Версия без захвата должна быть:(?i)p\w+@t-?\w+(?:-\w+)?(?:\.\w+)?\.atКоторый соответствует правильно.
Вы можете использовать
(?i)p\w+@t(?:-)?\w+(?:-\w+)?(?:\.\w+)?\.atСм. демо на экране regex101.com.
Как указывали другие,(?i)является встроенным модификатором, как и(?s)(однострочный) или(?m)(многострочный).