Python-基于正则表达式匹配将html标记注入字符串

Python-基于正则表达式匹配将html标记注入字符串,python,html,regex,string,tags,Python,Html,Regex,String,Tags,我用Python为自定义HTML页面编写了一个脚本,该脚本在字符串/行中查找一个单词,并使用以下标记突出显示该单词,其中instance是搜索的单词 <b><font color=\"red\">"+instance+"</font></b> 但是,我的字符串通常在一行中包含2个或多个实例,我需要追加 “+instance+”添加到这些实例中的每个实例,而不更改案例 我的方法的问题是,我试图对findall(精确匹配)发现的每个实例进行评分, 而

我用Python为自定义HTML页面编写了一个脚本,该脚本在字符串/行中查找一个单词,并使用以下标记突出显示该单词,其中instance是搜索的单词

<b><font color=\"red\">"+instance+"</font></b>
但是,我的字符串通常在一行中包含2个或多个实例,我需要追加
“+instance+”
添加到这些实例中的每个实例,而不更改案例

我的方法的问题是,我试图对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)
例如在find_all_实例中:
第二种模式=重新编译(实例)
string\u to\u search=第二个\u模式.sub(“+instance+”,string\u to\u search)
其结果如下:

<b><font color="red"><b><font color="red"><b><font color="red">Http</font></b></font></b></font></b></font>
Http
当我需要的时候

<b><font color="red">Http</font></b>
Http
我在想,如果我能够找到pattern.sub在执行时替换的字符串的确切部分,我就能够避免这种情况, 然而,我找不到这种用法的任何例子,这使我相信我做了一些非常错误的事情


如果有人能用我的方法插入
实例
而不替换所有匹配的
实例
(不区分大小写),我将不胜感激。

也许我误解了你的问题,但是re.sub不是最好的选择吗


示例:

好吧,我有两种方法很快做到了!第二个循环肯定是要走的路。它使用re.sub(正如其他人所评论的)。它将替换为小写搜索词“记住”

import re

FILE = open("testing.txt","r")
word="port"

#THIS LOOP IS CASE SENSITIVE
for line in FILE:
    newline=line.replace(word,"<b><font color=\"red\">"+word+"</font></b>")
    print newline

#THIS LOOP IS INCASESENSITIVE
for line in FILE:
    pattern=re.compile(word,re.IGNORECASE)
    newline = pattern.sub("<b><font color=\"red\">"+word+"</font></b>",line)
    print newline
重新导入
文件=打开(“testing.txt”、“r”)
word=“端口”
#此循环区分大小写
对于文件中的行:
换行符=行。替换(word“+”word+)
打印换行符
#这个循环是不敏感的
对于文件中的行:
pattern=re.compile(word,re.IGNORECASE)
换行符=pattern.sub(“+word+”,第行)
打印换行符
import re

FILE = open("testing.txt","r")
word="port"

#THIS LOOP IS CASE SENSITIVE
for line in FILE:
    newline=line.replace(word,"<b><font color=\"red\">"+word+"</font></b>")
    print newline

#THIS LOOP IS INCASESENSITIVE
for line in FILE:
    pattern=re.compile(word,re.IGNORECASE)
    newline = pattern.sub("<b><font color=\"red\">"+word+"</font></b>",line)
    print newline