Я пытаюсь сопоставить имена вроде John Williams и Kevin O'McDonald-Smith, но не Kevin O''McDonald, Kevin O'McDonald-Smith-Williams или Kevin Smith John Smith. Мой запрошенный код ниже:
r1 = re.findall(r"(([A-z]+')?[A-z]+)([,]?[\s-](([A-z]+')?[A-z]+)){0,2}", "Kevin O'McDonald-Smith")
print(r1)
Это выводит:
[('Kevin', '', '-Smith', 'Smith', "O'")]
Я ожидаю:
[("Kevin O'McDonald-Smith")]
Я тестировал этот случай регулярного выражения на https://regexr.com/, но мой код, использующий библиотеку Python re
, дает результат, которого я не ожидал.