textlist

关键词高亮:HTML字符串中匹配跨标签关键词

非 Y 不嫁゛ 提交于 2020-12-03 22:43:37
来源:木马啊 转载自:https://wintc.top/article/59 很久之前写过一个Vue组件,可以匹配文本内容中的关键词高亮,类似浏览器ctrl+f搜索结果。实现方案是,将文本字符串中的关键字搜索出来,然后使用特殊的标签(比如font标签)包裹关键词替换匹配内容,最后得到一个HTML字符串,渲染该字符串并在font标签上使用CSS样式即可实现高亮的效果。 当时的实现过于简单,没有支持接收HTML字符串作为内容进行关键词匹配。这两天有同学问到,就又思考了这个问题,发现并不是那么麻烦,写了几行代码解决一下。 一、匹配关键字:HTML字符串与文本字符串对比 1. 纯文本字符串的处理 对于纯文本字符串,如:“江畔何人初见月?江月何年初照人?”,假如我们想匹配“江月”这个关键字,则匹配结果可处理为: 江畔何人初见月? < font style = "background: #ff9632" > 江月 </ font > 何年初照人? 这样“江月”两个字被font标签包裹,在font标签上应用特殊的背景样式以达到关键字高亮的效果。 2. 对HTML字符串的处理 对于上述例子,如果内容字符串是一个HTML文本: 江畔何人初见 < b > 月 </ b > ?江 < b > 月 </ b > 何年初照人? 对于同样的关键词“江月”,怎样处理它呢?因为关键词中的字在不同的标签内

爬虫的三种解析方式(正则解析, xpath解析, bs4解析)

霸气de小男生 提交于 2020-11-22 01:42:40
一 : 正则解析 : 常用正则回顾: 单字符: . : 除换行符以外的所有字符 [] : [aoe] [a - w] 匹配集合中任意一个字符 \d : 数字 [0 -9 ] \D : 非数字 \w : 非数字, 字母, 下划线, 中文 \W : 非\w的 \s : 所有的空白字符, 包括空格, 制表符, 换页符等等, 等价于 [ \f\n\r\t\v ] \S : 非空白 数量修饰: * : 任意多次 >= 0 + : 至少一次 >= 1 ? : 可有可无, 0次或者一次 {m} : 固定m次 hello{ 3 } {m,} : 至少m次 {m,n} : m - n次 边界 : $ : 以某某结尾 ^ : 以某某开头 分组 : (ab) 贪婪模式 : . * 分贪婪(惰性) 模式: . * ? re.I : 忽略大小写 re.M : 多行匹配 re.S : 单行匹配 re.sub(正则表达式, 替换内容, 字符串) 回顾 : import re # 提取出python key= " javapythonc++php " re.findall( ' python ' ,key)[0] # #################################################################### # 提取出hello world key= " <html>