第一章:文本-re:正则表达式-搜索选项(3)

本文探讨了Python3中正则表达式的Unicode处理方式,对比了ASCII与Unicode模式的区别,通过实例展示了如何在不同模式下进行文本匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.3.7.3 Unicode
在python3中,str对象使用完整的Unicode字符集,str的正则表达式处理会假设模式和输入文本都是Unicode.之前描述的转义码默认的也是按Unicode定义。这些假设意味着模式\w+对单词"French"和"Français"都能匹配。要向python2中的默认假设那样将转义码限制到ASCII字符集,编译模式或者调用模块级函数search()和match()时要使用ASCII码。

import re

text = u'Français österreich'
pattern = r'\w+'
ascii_pattern = re.compile(pattern,re.ASCII)
unicode_pattern = re.compile(pattern)

print('Text    :',text)
print('Pattern :',pattern)
print('ASCII   :',list(ascii_pattern.findall(text)))
print('Unicode :',list(unicode_pattern.findall(text)))

其他转义序列(\W,\b,\B,\d,\D,\s和\S)对ASCII文本也会采用不同的处理方式。re不再通过查询Unicode数据库来查找各个字符的属性,而是使用转义序列标识的字符集的ASCII定义。
运行结果:

Text : Français österreich
Pattern : \w+
ASCII : [‘Fran’, ‘ais’, ‘sterreich’]
Unicode : [‘Français’, ‘österreich’]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值