正则修改html源码中的文正内容,其余部分保持不变
html = """<div class="w-number this is class"> <span class="tpte">this is class 14℃</span> </div>"""
如上源码,在class中包含 this is class 而在span的正文里也有this is class,现在需要将正文里的this is class加入一个超链接
<div class="w-number this is class"> <span class="tpte"><a href="https://www.xxx.com/a/this_is_class" style="color:blue;">this is class</a> 14℃</span> </div>
如果用正则匹配的话很容易匹配到div class里的this is class里,单独把内容提取出来再替换的话就无法还原回样式了,试过xpath2.0的方式,都不能很好的解决问题,
最后还是通过复杂点的正则解决:
第一版正则 word_pattern = re.compile(r'\b{0}\b'.format(hs), re.IGNORECASE) 这个会扫描整个文档
第二版正则 word_pattern = re.compile(r"(>((?!<).)*)\b{0}\b(((?!<).)*<)".format(hs), re.IGNORECASE) 这种方式就只扫描正文内容
第二版很好的解决了问题