#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
@File : 模糊替换.py
@Time : 2022-03-31-22-34
@Author : 坐公交也用券
@Version : 1.0
@Contact : faith01238@hotmail.com
@Homepage : https://liumou.site
@Desc : 当前文件作用
"""
import re
class Sed:
def __init__(self, old, new, url='https://liumou.site/doc/'):
"""
模糊替换
:param old: 旧字符串
:param new:
"""
self.url = url
self.new = new
self.old = old
self.d = None
def get_number(self):
"""
匹配固定字符+变量数字用于生成效果组
(\d*) 意思就是匹配数字(\d)并且不限制个数(*),除非遇到非数字字符
:return:
"""
p = re.compile(rf'{self.url}(\d*)')
self.d = p.search(string=self.old)
print("self.d.group(): ", self.d.group())
def create(self):
"""
将已经生成效果的字符串替换到旧的数据
rf 意思就是只当作字符串处理(r),使用python3.6启用的新格式化语法(f)
{self.url} # 意思就是使用新的格式化语法之后填充一个变量到这段字符
:return:
"""
# 拼接效果组
new_re = f" [{self.d.group()}]({self.d.group()}) "
# 替换模块,先匹配需要替换的内容,然后替换成效果组
new = re.sub(rf'{self.url}(\d*)', new_re, old)
print(new)
def start(self):
"""
开始
:return:
"""
self.get_number()
self.create()
if __name__ == "__main__":
# __name__ == "__main__" 意思就是如果这个文件作为主程序执行,则从下面开始运行,否则不会运行(被调用)
old = '打开https://liumou.site/doc/195,执行命令,https://liumou.site/doc/195执行完成后,这时北京CA插件卸载已经完成,需要重启电脑'
new = '打开[https://liumou.site/doc/195](https://liumou.site/doc/195),执行命令,执行完成后,这时北京CA插件卸载已经完成,需要重启电脑'
up = Sed(old=old, new=new)
up.start()