在正则式中使用 Unicode

问题

你正在使用正则表达式处理文本,但是关注的是 Unicode 字符处理。

解法

默认情况下 re 模块已经对一些 Unicode 字符类有了基本的支持。比如, \d 已经匹配任意的 unicode 数字字符了:

>>> import re
>>> num = re.compile('\d+')
>>> # ASCII digits
>>> num.match('123')
<_sre.SRE_Match object at 0x1007d9ed0>
>>> # Arabic digits
>>> num.match('\u0661\u0662\u0663')
<_sre.SRE_Match object at 0x101234030>
>>>

如果你想在模式中包含指定的 Unicode 字符,你可以使用 Unicode 字符对应的转义序列 (比如 nuFFF 或者 nUFFFFFFF )。比如,下面是一个匹配几个不同阿拉伯编码页面中所有字符的正则表达式:

>>> arabic = re.compile('[\u0600-\u06ff\u0750-\u077f\u08a0-\u08ff]+')
>>>

当执行匹配和搜索操作的时候,最好是先标准化并且清理所有文本为标准化格式。但是同样也应该注意一些特殊情况,比如在忽略大小写匹配和大小写转换时的行为。

>>> pat = re.compile('stra\u00dfe', re.IGNORECASE)
>>> s = 'straße'
>>> pat.match(s) # Matches
<_sre.SRE_Match object at 0x10069d370>
>>> pat.match(s.upper()) # Doesn't match
>>> s.upper() # Case folds
'STRASSE'
>>>

讨论

混合使用 Unicode 和正则表达式通常会让你抓狂。如果你真的打算这样做的话,最好考虑下安装第三方正则式库,它们会为 Unicode 的大小写转换和其他大量有趣特性提供全面的支持,包括模糊匹配。

《Python Cookbook 3rd》笔记(2.10):在正则式中使用 Unicode相关推荐

  1. 《Python Cookbook 3rd》笔记汇总

    文章目录 一.数据结构 二.字符串和文本 三.数字.日期和时间 四.迭代器与生成器 五.文件与IO 一.数据结构 标题 关键词 1.1:拆分序列后赋值给多个变量 可迭代对象.拆分赋值 1.2:拆分任意 ...

  2. 《Python cookbook》笔记二

    <Python cookbook>笔记二 第二章 字符串和文本 -使用多个界定符分割字符串- 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的. # str ...

  3. Machine Learning with Python Cookbook 学习笔记 第9章

    Chapter 9. Dimensionality Reduction Using Feature Extraction 前言 本笔记是针对人工智能典型算法的课程中Machine Learning w ...

  4. 《Python Cookbook 3rd》笔记(1.4):查找最大或最小的N个元素

    <Python Cookbook 3rd>1.4:查找最大或最小的N个元素 问题 怎样从一个集合中获得最大或者最小的N个元素列表? 解法 heapq 模块有两个函数:nlargest()和 ...

  5. Python Cookbook 3rd Edition Documentation

    Python Cookbook 3rd Edition Documentation 文章目录 第一章:数据结构和算法 1.1 解压序列赋值给多个变量 问题 解决方案 讨论 1.2 解压可迭代对象赋值给 ...

  6. Machine Learning with Python Cookbook 学习笔记 第8章

    Chapter 8. Handling Images 前言 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放 ...

  7. 北理工嵩天Python语言程序设计笔记(10 Python计算生态概览)

    前言 本文是对<北理工 嵩天/黄天宇/礼欣 Python语言程序设计>的学习笔记,供自己查阅使用. 文章目录 北理工嵩天Python语言程序设计笔记(目录) 北理工嵩天Python语言程序 ...

  8. Machine Learning with Python Cookbook 学习笔记 第6章

    Chapter 6. Handling Text 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放在代码压缩 ...

  9. 《Python Cookbook 3rd》笔记(2.4):字符串匹配和搜索

    字符串匹配和搜索 问题 你想匹配或者搜索特定模式的文本 解法 如果你想匹配的是字面字符串,那么你通常只需要调用基本字符串方法就行,比如 str.find() , str.endswith() , st ...

最新文章

  1. 查看Eclipse版本
  2. python获取按键状态_谁在用 python 弹奏一曲菊花台
  3. 使用Charles抓包
  4. Sublime Text3 配置设置攻略
  5. Linux 基础I/O :文件描述符,重定向,文件系统,软链接和硬链接,动态库和静态库
  6. 云南计算机一级没有开考吗,2020年3月云南计算机一级考试时间
  7. 想要设计自己的微服务?看这篇文章就对了 1
  8. Java 多线程 —— AQS 详解
  9. php如何上传txt文件,并且读取txt文件
  10. opencv+Dlib python大眼代码
  11. [swift 进阶]读书笔记-第八章:错误处理 C8P3 带有类型的错误
  12. ai一个线段多个箭头_「平面设计」Illustrator(AI)基础教学-第2章 绘制简单的图形...
  13. 下载 一寸照片编辑器
  14. 六维空间等IPV6资源上不去的一种解决方法
  15. 免费又好用怎么把文字转换成语音呢?分享我常用的3个配音神器
  16. 我的appstore新游戏--LeBallon 拿码了
  17. sm缩写代表什么意思_在嘉庚,这些缩写都是SM意思???
  18. 戏人看戏--什么是Web3.0?区块链又是什么?如何写一个web3.0的界面?
  19. c语言笔试程序改错题,C语言笔试--程序改错题.doc
  20. 【RL系列】Multi-Armed Bandit问题笔记

热门文章

  1. 月头月尾oracle取数,Oracle分析函数Over()的使用
  2. python2卸载后yum不可用_centos7误删除python2导致的python和yum不可用处理-阿里云开发者社区...
  3. arcgis缓冲后在envi中聚类出错
  4. SharePoint学习札记[6] — WebPart之基础
  5. java 延迟实例化_延迟初始化Spring Bean的几种方式
  6. 【微软官方文档】Windows终端(Windows Terminal)
  7. 第一次尝试修复Hbase2出现Region不一致,HBCK2
  8. REVERSE-PRACTICE-BUUCTF-5
  9. 【爱心代码大全】——情人节表白代码送给她属于我们程序员的浪漫
  10. 【机器学习】 - 各种人脸数据集下载地址及说明汇总