匹配提取
一些字符串既包含中文、也包含英文、数字等,需要对这类字符串做提取,单个中文字符、英文单词以及数字表达等。需要采用正则匹配的方式来做
比如对于如下针对数据的描述
Android/IOS 2条装(0.25米+1米)土豪金
拆分后想要得到
"Android" "/" "IOS" "2" "条" "装" "(" "0.25" "米" "+" "1" "米" ")" "土" "豪" "金"
可以采用正则的方式匹配提取这些字符
def str_split(str):
regex = r"[\u4e00-\u9fef]|[0-9.]*[0-9]+|[a-zA-Z]+\'*[a-z]*|."
matches = re.findall(regex, str, re.UNICODE)
return matches
print(str_split("Android/IOS 2条装(0.25米+1米)土豪金"))
输出结果如下:
['Android', '/', 'IOS', ' ', '2', '条', '装', '(', '0.25', '米', '+', '1', '米', ')', '土', '豪', '金']
正则解析
通过python包re来做正则匹配提取
包括四部分:中文字符、数字、英文单词和其它字符
中文字符:[\u4e00-\u9FEF]
汉字的unicode编码从4E00开始,基本汉字到9FA5,基本补充到9FEF。
汉字的unicode编码可见 汉字的unicode编码
数字:[0-9]*[.]?[0-9]+
这里只匹配了整数或者带小数的情况,对于科学计数的方式还需要另外考虑。
英文单词:[a-zA-Z]+\’*[a-z]*
其它字符: .