recidivist
Одна из непоняток это метасимвол * (greedy еще называется). Как его вообще использовать в программе, или хотя бы обозначить?
Символ * в регулярном выражении означает “совпадение с нулевым или большим количеством экземпляров”. Это значит, что группа перед звездочкой может встречаться в тексте любое количество раз подряд. Она может либо вообще отсутствовать, либо повторяться.
Например, в тексте речь идет о приключениях Бэтмена, который может быть мужчина (Batman) или женщина (Batwoman) или даже Batwowowowoman:
>>> myRegex = re.compile(r'Bat(wo)*man')
>>> mo1 = myRegex.search('The Adventures of Batman')
>>> mo1.group()
'Batman'
>>> mo2 = myRegex.search ('The Adventures of Batwoman')
>>> mo2.group()
'Batwoman'
>>> mo3 = myRegex.search('The Adventures of Batwowowowoman')
>>> mo3.group()
'Batwowowowoman'
Примечание: “greedy” на английском означает “жадный”. То есть, знак * будет пытаться найти максимальное количество повторений группы - например, ‘Batwowowowoman’.