问题描述:
写一个函数,它接收一个字符串,做的事情和strip()字符串方法一样。如果只传入了要去除的字符串,没有其他参数,那么就从该字符串的首尾去除空白字符;否则,函数第二个参数指定的字符将从该字符串中去除。
注意:文中只要求去除字符串首尾指定字符,不含中间指定字符,不然就成实现replace()方法了
思路分析:
1.正则表达式中使用格式化字符串引入变量
2.首尾采用贪婪匹配,中间采用非贪婪匹配
3.启用分组功能
参考代码:
import re
def re_strip(string, para = r'\s'):
"""自定义strip函数"""
numRegex = re.compile(r'^(%s)*(.*?)(%s)*$' %(para, para), re.S)
mo = numRegex.search(string)
return mo.group(2)
#若去除字符串中含有元字符或特殊符号,视情况加r和\转义
print(re_strip(' num num '))
print(re_strip('--a-b-c--', '-'))
print(re_strip('world-hello-world', 'world'))
print(re_strip('*a*b*c*', r'\*'))
print(re_strip('123num789', r'\d'))
print(re_strip('ABC123xyz', '[A-Za-z]'))
运行结果:
num num
a-b-c
-hello-
a*b*c
num
123