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以下的长度过滤了,可以根据自己需求来修改。
由于象形文字中文很难通过字面意思来区分单词,所以中文在正则表达式方面去按单词来匹配是很难做到的,不像英文,可以通过首写大写或者一些特殊符号来区分。
未经博主允许,禁止直接转载本博客任何内容(可以在文章中添加链接,禁止原文照搬),如需直接原文转载对应文章,请在该文章中留言联系博主,谢谢!!