7.18.2 strip()的正则表达式版本
写一个函数,它接受一个字符串,做的事情和strip()字符串方法一样。如果只传入了要去除的字符串,没有其他参数,那么就从该字符串首尾去除空白字符。否则,函数第二个参数指定的字符将从该字符串中去除。
import re
def del_m(message, m=''):
if m == '':
n = re.compile(r'^\s+|\s+$')
print(n.sub('', message))
else:
n = re.compile(m)
print(n.sub('', message))
del_m(' jellossdf asdf ')
del_m('jellossdf as df ')
del_m('jellossdf as df')
del_m('jellossdf as df', 'f')
运行结果如下:
jellossdf asdf
jellossdf as df
jellossdf as df
jellossd as d
在第二个正则表达式中n = re.compile(m)
,最开始写的是n = re.compile(r'm')
,但是调用这个del_m('jellossdf as df', 'f')
,时结果却是这样的:jellossdf as df
,并没有把m
传入的字符f
删掉,后来想了半天发现n = re.compile(r'm')
这样写的话 这个正则表达式并没有吧m
当做形参来处理,而是直接当成了不管形参m
传的是实参,都会删掉message
输入的字符串中m
字符。