在字符串中识别 大中小3种括号括号并删除括号及其中的内容
1、若括号为半角括号
常见的英文(半角)符号如( ) ,直接用正则匹配即可
import re
str="你(你)在[在]干嘛{干嘛}"
result = re.sub(u"\\(.*?\\)|\\{.*?}|\\[.*?]", "", str)
print(result)
对于是全角括号的,我没有按照2的操作,只是将1里面的半角括号,改为全角括号就可以了
2、若括号为全角括号
全角字符(中文括号、标点),直接用正则匹配会存在问题:因为编码通常为为utf8,若直接匹配,中文括号的3字节编码会和一些中文的字节编码重复,产生意想不到的结果;用decode将正则的字符串转为unicode编码,则可避免产生错误结果,但也无法直接用正则匹配到。
import sys
import re
str = u"你(你)在[在]干{干}嘛【嘛】"
result = re.sub(u"\\(.*?)|\\{.*?}|\\[.*?]|\\【.*?】", "", str.encode('utf-8').decode())
print(result)
本质上是将正则的pattern字符和目标的编码对应, 所以将正则的字符串也用unicode表示就可以