需求:通过elasticsearch搜索出来的结果需要根据关键字进行高亮显示
思考:对关键字进行多项切割,去除符号空格等指定型的切割符号。使用正则进行替换
def api_show_highlight(key: str, origin: str) -> str:
"""字符串替换,忽略大小写,并返回以前的大小写
:param key: 关键字
:param origin: 待替换的文本
:return: 替换完成的文本
"""
# 获取到需要进行高亮的关键字,并进行多项切割字符串
rep = sorted(list({i for i in re.split(r"[-\s,;]", key) if i}), key=lambda i: len(i), reverse=True)
pattern = re.compile("|".join(rep), re.IGNORECASE)
# 多项替换
return pattern.sub(lambda m: '<mark style="color: red;background-color: white;">' + m.group(0) + '</mark>', origin)
网友评论