学习正则表达式中,写了一个re.sub函数,功能是替换指定字符。一般字符也能替换,但遇到几个特殊字符就出错了。。。有路过大神看到请不吝指教:
发现正则表达式中的某些个字符不能被替换,某些个会导致程序崩溃。不能替换的是 :^ $ | ] 崩溃的是:* [ \ ( )
#!/usr/bin/env python3
# -*-coding:utf-8-*-
import re
st = ' sdfJ !@$%^&*|\][}{()dfgh4567j ' #被替换的字符串
res = '^' #替换此字符
def mystrip(s, restr = ''): #默认不替换
patt1 = re.compile(r'^\s*([\S\s]*)\S+?\s*$') # 正则式去两端空白
s = str(patt1.match(s).groups(1)[0])
if restr in s: # 以下替换字符
patt2 = re.compile(restr)
s = patt2.sub('', s)
return s
print(mystrip(st, res))