Мне нужно извлекать имена после названий, но мне нужно также включать дефисные имена, которые могут иметь различные варианты.Приведенный ниже скрипт не может подобрать дефисные имена.
text = 'This is the text where Lord Lee-How and Sir Alex Smith are mentioned.\
Dame Ane Paul-Law is mentioned too. And just Lady Ball.'
names = re.compile(r'(Lord|Baroness|Lady|Baron|Dame|Sir) ([A-Z][a-z]+)[ ]?([A-Z][a-z]+)?')
names_with_titles = list(set(peers.findall(text)))
print(names_with_titles)
Текущий вывод:
[('Lord', 'Lee', ''), ('Sir', 'Alex', 'Smith'), ('Dame', 'Ane', 'Paul'), ('Lady', 'Ball', '')]
Требуемый вывод должен быть:
[('Lord', 'Lee-How', ''), ('Sir', 'Alex', 'Smith'), ('Dame', 'Ane', 'Paul-Law'), ('Lady', 'Ball', '')]
Мне удалосьчтобы извлечь дефисные имена с этим шаблоном -
hyph_names = re.compile(r'(Lord|Baroness|Lady|Baron|Dame|Sir) ([A-Z]\w+(?=[\s\-][A-Z])(?:[\s\-][A-Z]\w+)+)')
Но я не могу понять, как их объединить.Буду признателен за вашу помощь!