github.com/jincm/wesharechain@v0.0.0-20210122032815-1537409ce26a/server/block/util/re_ex.py (about) 1 #coding:utf-8 2 3 4 def reg_sub_ex(reg_ob, s, mcb): 5 """ 6 增强型正则替换 7 8 :param reg_ob: regex object 9 :param s: input string 10 :param mcb: match to str callback 11 """ 12 assert mcb and callable(mcb) 13 14 ms = tuple(reg_ob.finditer(s)) 15 if not ms: 16 return s 17 18 rt = [] 19 for i in xrange(len(ms)): 20 unmatch = s[0: ms[i].start()] if 0 == i else s[ms[i - 1].end(): ms[i].start()] 21 22 rt.append(unmatch) 23 rt.append(mcb(ms[i])) 24 25 rt.append(s[ms[-1].end():]) 26 return ''.join(rt)