Предположим, я хотел бы найти набор тегов в строке, где некоторые теги могут быть подстроки других тегов.Например, я хотел бы найти теги ["UC", "UC Berkeley", "Berkeley"] в тексте "Он посещал UC Berkeley в прошлом году".Я ожидаю получить все три тега, чтобы показать.Тем не менее, когда я запускаю это в Python, я получаю только «UC» и «Berkeley»:
import re
string = "He attended UC Berkeley last year."
compiled_regexp = re.compile("UC|UC Berkeley|Berkeley", re.IGNORECASE)
re.findall(compiled_regexp, string)
# result is: ['UC', 'Berkeley']
Как я могу получить все три тега для отображения?
MyФактический вариант использования включает в себя десятки тысяч тегов, многие из которых являются префиксами других тегов.Есть также теги, которые являются префиксами других тегов, которые сами являются префиксами других тегов и т. Д. (Например, ["UC", "UCB", "UCBA" ...]). Было бы невозможно вручную создать группы захвата для всехиз префиксов других тегов.Есть ли лучший способ сделать это?
Обновление:
Я решил сделать следующее:
Сначала я нахожу все теги, которые являются префиксамидругих тегов.Затем я создаю два отдельных регулярных выражения, одно для тегов с префиксами, а другое для тегов без префиксов.Наконец, я ищу строку с обоими регулярными выражениями и объединяю результаты.