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)