如何实现跨行匹配但是又不将原有的换行符替换掉?比如:
s = """aaa[AA]aa[/AA]bb[BB]bb
bb[/BB]cc[CC]cc[/CC][BB]bb[/BB]b"""
将[BB]...[/BB]以及中间的内容替换掉。得到结果:
aaa[AA]aa[/AA]bb
cc[CC]cc[/CC]b
我看网上有一个实现方法:
import re def repl(m): return re.sub(r2,'', m.group()) s = """aaa[AA]aa[/AA]bb[BB]bb bb[/BB]cc[CC]cc[/CC][BB]bb[/BB]b""" r1 = re.compile('\[BB\](.*?)\[/BB\]', re.S) r2 = re.compile('\S') val = re.sub(r1,repl, s) print(val)
但是对于repl这个函数我看不懂,为什么后面调用repl时没有参数?麻烦详细解释下整个替换过程,或者有更好的方法可以告知我。