在字符串中識別括號並刪除括號及其中的內容
括號包括 大中小 3種括號
輸入為 1個字符串 s="我是一個人(中國人)[真的]{確定}";
輸出為 result = "我是一個人"
1.若括號為半角括號
常見的英文(半角)符號如( ) 直接用正則匹配即可
s="我是一個人(中國人)aaa[真的]bbbb{確定}" a = re.sub(u"\\(.*?\\)|\\{.*?}|\\[.*?]", "", s) print a
2.若括號為全角括號
全角字符(中文括號、標點),直接用正則匹配會存在問題:
因為編碼通常為為utf8,若直接匹配,中文括號的3字節編碼會和一些中文的字節編碼重復,產生意想不到的結果
若用decode轉為unicode編碼,則可避免產生錯誤結果,但也無法直接用正則匹配到
import sys reload(sys) sys.setdefaultencoding('utf8') import re s = u"我是一個人(中國人)aaa[真的]bbbb{確定}【ys】21" a = re.sub(u"\\(.*?)|\\{.*?}|\\[.*?]|\\【.*?】", "", s.decode()) print a
這種方法本質上就是將正則的pattern字符和目標的編碼對應, 所以將正則的字符串也用unicode表示就可以