python 用正则表达式 提取单个中文或者多个中文组合

话不多说,了解下中文编码,我们中国的汉字编码是从/u4e00-/u9fa5,即/u4e00  到 /u9fa5

匹配单个中文,即每个中文都输出用的pattern是 r'[\u4e00-\u9fa5]'  , 其中r为转义字符., 举个例子:'12sdw这@F@#年$H$头^&*^%^猪都V#$sad会2b45b5*(上h45y45树3TNYT$%ver' 可以匹配出 ['这', '年', '头', '猪', '都', '会', '上', '树']

代码:

import re
match_obj = re.findall(r'[\u4e00-\u9fa5]','12sdw这@F@#年$H$头^&*^%^猪都V#$sad会2b45b5*(上h45y45树3TNYT$%ver')
print(match_obj)

结果:

D:\python_learning>C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe d:/python_learning/test.py
['这', '年', '头', '猪', '都', '会', '上', '树']

 

 

匹配多个连续中文,即把所有中文合并一起输出,对应的pattern 为 r'[\u4e00-\u9fa5]+' ,只比匹配单个中文多了一个 '+ ' , 意思为匹配一个或多个中文。举个例子:'12sdw这@F@#年$H$头^&*^%^猪都V#$sad会2b45b5*(上h45y45树3TNYT$%ver' 可以匹配出 这年头猪都会上树

代码:

import re
match_obj = re.findall(r'[\u4e00-\u9fa5]+','12sdw这@F@#年$H$头^&*^%^猪都V#$sad会2b45b5*(上h45y45树3TNYT$%ver')
print(match_obj)

结果:

D:\python_learning>C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe d:/python_learning/test.py
['这', '年', '头', '猪都', '会', '上', '树']

 

重点:假如你想输出 '这年头猪都会上树' 也是可以的,上面的match_obj其实都是list类型,通过''.join(match_obj)即可。

代码:

import re
match_obj = re.findall(r'[\u4e00-\u9fa5]','12sdw这@F@#年$H$头^&*^%^猪都V#$sad会2b45b5*(上h45y45树3TNYT$%ver')
print(''.join(match_obj))

同理pattern r'[\u4e00-\u9fa5]+' 也可以

import re
match_obj = re.findall(r'[\u4e00-\u9fa5]+','12sdw这@F@#年$H$头^&*^%^猪都V#$sad会2b45b5*(上h45y45树3TNYT$%ver')
print(''.join(match_obj))

同样都是输出:

D:\python_learning>C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe d:/python_learning/test.py
这年头猪都会上树

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值