python 正则表达式 按大写字母、中文、特殊符号分离字符串

python 正则表达式 按大写字母、中文、特殊符号分离字符串

import re

def split_except_alphabetDigitChinese(unicode_str):
    """
    @return:['matched str', '']
    """
    if type(unicode_str) != type(u''):
        try:
            unicode_str = unicode_str.decode('utf8')
        except:
            pass
        
    result = re.findall(u'[\u4e00-\u9fa5]+|[A-Z][a-z0-9]{2,}|[A-Z]{2,}(?![a-z])|(?![A-Z])[a-z][a-z0-9]{2,}',unicode_str)
    result = [t.strip() for t in result if t]
    #print(result) 
    return result
if __name__ == '__main__':
    print(split_except_alphabetDigitChinese(u'aa我们dll%Tools_exportImport like*unrealUPPERCASE09Desing09dddd'))

打印:['我们', 'dll', 'Tools', 'export', 'Import', 'like', 'unreal', 'UPPERCASE', 'Desing09dddd']

有一些不完美,例如全是大写的单词后面的数字没有匹配到,不过基本满足需求。

{2,}控制了匹配长度,我这里把2以下的长度过滤了,可以根据自己需求来修改。

由于象形文字中文很难通过字面意思来区分单词,所以中文在正则表达式方面去按单词来匹配是很难做到的,不像英文,可以通过首写大写或者一些特殊符号来区分。

posted @ 2022-01-26 11:04  ibingshan  阅读(788)  评论(0编辑  收藏  举报