使用正则的零宽断言替换两个关键词之间的内容

1.前言

​ 遇到朋友有一个替换两个关键词之间的关键词的需求,之前也查过怎么做,但文章几乎为零(虽然有零宽断言的文章,但没有把这个需求作为用法明确体现出来)。个人理解的零宽断言的用处就是:“对匹配内容的上下文加以限定且限定的规则不参与匹配结果”。使用python正则。

2.内容

​ 假如我们有front_key 目标内容rear_key顺序排列组成字符串,根据目标内容前后位置关系,可分为两组:

  • 前序断言 (?<=) (?<!)

置于想要匹配的内容之前,断言目标内容前:一定是某个内容(?<=内容)、一定不是某个内容(?<!内容)

#re.sub(匹配模式,替换内容,代匹配字符串)
#以下例子把匹配到的内容替换为'--'
import re
s="www.kikyo.ink  kikyo.ink"
#断言匹配内容前一定是'www'
print(re.sub(r"(?<=www.)kikyo.ink","--",s))

#输出:www.--  kikyo.ink
import re
s="www.kikyo.ink  kikyo.ink"
#断言匹配内容前一定不是'www'
print(re.sub(r"(?<!www.)kikyo.ink","--",s))

#输出:www.kikyo.ink  --
  • 后序断言 (?=) (?!)

    置于想要匹配的内容之后,断言目标内容后:一定是某个内容(?<=内容)、一定不是某个内容(?<!内容)

import re
s = "kikyo.com     kikyo.ink"
#断言匹配内容后一定是'ink'
print(re.sub(r"kikyo.(?=ink)", "--", s))

#输出结果:kikyo.com     --ink
import re
s = "kikyo.com     kikyo.ink"
#断言匹配内容后一定不是'ink'
print(re.sub(r"kikyo.(?!ink)", "--", s))

#输出结果:--com     kikyo.ink

参考百度百科-零宽断言

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值