#!/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()