Python正则表达式处理中文中的匹配

由于中文使用2个字节来表示一个字,在正则表达式中如果不进行转换的话,编译器是不能识别的,所以这里简要谈一下正则表达式中遇到中文的问题。


关于python的re模块的基本用法,与各种正则表达式的基本形式,在之前的一篇文章中,进行过介绍,故此处不再赘述。


下面是一段对中文进行正则表达式处理的例子:使用Python3.3

import re

msg = "这是一个例子"
pat1 = "是"
pat2 = "是(..){1,2}" # 两个..表示一个中文字
pat3 = "是(..){1,2}?"

res1 = re.search(pat1.encode('gbk'), msg.encode('gbk')) # 匹配出'是'
if res1 is not None:
    print(res1.group().decode('gbk'))

res2 = re.search(pat2.encode('gbk'), msg.encode('gbk')) # 匹配出'是一个'
if res2 is not None:
    print(res2.group().decode('gbk'))

res3 = re.search(pat3.encode('gbk'), msg.encode('gbk')) # 匹配出'是一'

if res3 is not None:
    print(res3.group().decode('gbk'))

res4 = re.search(pat1.encode('utf'), msg.encode('utf'))

if res4 is not None:
    print(res4.group().decode('utf'))

res5 = re.search('t.'.encode('utf'), 'this'.encode('utf'))

if res5 is not None:
    print(res5.group().decode('utf'))

中文一般是用‘gbk’进行编码。当使用‘utf’时只能处理确定的字,但不能模糊匹配,目前没弄清楚原因。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值