首页 新闻 赞助 找找看

re.sub跨行匹配的问题

0
悬赏园豆:5 [待解决问题]

如何实现跨行匹配但是又不将原有的换行符替换掉?比如:

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时没有参数?麻烦详细解释下整个替换过程,或者有更好的方法可以告知我。

 
从MH到其他的主页 从MH到其他 | 初学一级 | 园豆:140
提问于:2018-08-10 15:02
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册