Я написал сценарий в Python для пользовательской HTML-страницы, которая находит слово в строке/строке и выделяет именно это слово с использованием следующих тегов, где экземпляр - это слово, которое искали.Python - вставлять теги html в строки на основе соответствия регулярных выражений
<b><font color=\"red\">"+instance+"</font></b>
Мне нужно найти слово (чувствительно к регистру), скажем, «порт» в строке, которая может быть порт, порт, поддержка, поддержка и т.д., что достаточно просто.
pattern = re.compile(word, re.IGNORECASE)
find_all_instances = pattern.findall(string_to_search)
Однако мои строки часто содержат 2 или более экземпляров в одной строке, и мне нужно добавить <b><font color=\"red\">"+instance+"</font></b>
к каждому из этих случаев, не меняя случаев.
Проблема с моим подходом заключается в том, что я пытаюсь повторить все экземпляры, найденные с помощью findall (точное совпадение), , в то время как в одной строке также можно найти несколько одинаковых совпадений.
for instance in find_all_instances:
second_pattern = re.compile(instance)
string_to_search = second_pattern.sub("<b><font color=\"red\">"+instance+"</font></b>", string_to_search)
Это приводит следующее:
<b><font color="red"><b><font color="red"><b><font color="red">Http</font></b></font></b></font></b></font>
, когда мне нужно
<b><font color="red">Http</font></b>
Я думал, я мог бы избежать этого, если бы я был в состоянии узнать точную часть строка, которую pattern.sub заменяет в момент ее выполнения, , однако я не смог найти примеров такого использования, что заставляет меня думать, что я делаю что-то очень неправильное ,
Если у кого есть способ, я могу использовать для вставки <b><font color="red">instance</font></b>
без замены instance
для всех совпадений (без учета регистра), то я был бы признателен.
спасибо. Это работает так, как ожидалось. – iluzek