Я пытаюсь найти два предмета (один из них является подстрокой другой) в предложении с регулярным выражением, но он всегда находит подстроку. Например, есть два пункта ["князь", "герцог В"] и некоторые предложения:
Герцог
Герцог кино.
Как называется кино герцог?
Герцог в
Герцог в это кино.
Как называется кино играла?
Чего я хочу после нахождения локации:
The_Duke
The_Duke фильм.
Как называется кино The_Duke?
The_Duke_of_A
The_Duke_of_A фильм.
Как называется кино The_Duke_of_A?
Код, который я пробовал-это:
for sent in sentences:
for item in ["The Duke", "The Duke of A"]:
find = re.search(r'{0}'.format(item), sent)
if find:
sent = sent.replace(sent[find.start():find.end()], item.replace(" ", "_"))
Но у меня получилось:
The_Duke
The_Duke фильм.
Как называется кино The_Duke?
The_Duke из
The_Duke в кино.
Как называется кино The_Duke а?
Изменение положения элементов в списке не подходит в моем случае, как я есть большой список.