编译正则表达式模式,返回一个对象。可以把常用的正则表达式编译成正则表达式对象,方便后续调用及提高效率。

源码解析:

def compile(pattern, flags=0):"Compile a regular expression pattern, returning a Pattern object."return _compile(pattern, flags)

语法结构:

re.compile(pattern, flags=0)
  • pattern 指定编译时的表达式字符串
  • flags 编译标志位,用来修改正则表达式的匹配方式。支持 re.L|re.M 同时匹配

flags 标志位参数:

  • re.I(re.IGNORECASE) :使匹配对大小写不敏感
  • re.L(re.LOCAL) :做本地化识别(locale-aware)匹配
  • re.M(re.MULTILINE) :多行匹配,影响 ^ 和 $
  • re.S(re.DOTALL) :使 . 匹配包括换行在内的所有字符
  • re.U(re.UNICODE):根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
  • re.X(re.VERBOSE):该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

示例代码1:

import res = 'a,b,,,,c d'
a = re.compile('[, ]+')
b = a.split(s)
print(a)
print(b)c = re.compile('[,]+')
d = c.split(s)
print(d)

运行结果:

示例代码2:   【对比示例代码1,不使用re.compile()】

import res = 'a,b,,,,c d'
# a = re.compile('[, ]+')
b = re.split('[, ]+', s)
print(b)# c = re.compile('[,]+')
d = re.split('[,]+', s)
print(d)

运行结果:

示例代码3:  【使用re.I:对大小写不敏感】

import res = 'aBdfbksdBjksdbsk'
aa = re.compile('b')
bb = aa.split(s)
print(bb)s = 'aBdfbksdBjksdbsk'
aa = re.compile('b', re.I)
bb = aa.split(s)
print(bb)

运行结果:

示例代码4:  【匹配手机号】

import res1 = 'num:12345678900,name:dgw,phone:19876543210,age:25'
s2 = 'num:12345678900,name:dgw,phone:119876543210,age:25'aa = re.compile(r'(?<=\D)1[3456789]\d{9}', re.S)
bb = aa.findall(s1)
print(bb)cc = re.compile(r'(?<=\D)1[3456789]\d{9}', re.S)
dd = cc.findall(s2)
print(dd)ee = re.compile(r'1[3456789]\d{9}', re.S)
ff = ee.findall(s2)
print(ff)gg = re.compile(r'(?<=\d)1[3456789]\d{9}', re.S)
hh = gg.findall(s2)
print(hh)

运行结果:

python中re.compile()用法详解相关推荐

  1. python中的super用法详解_【Python】【类】super用法详解

    一.问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(sel ...

  2. python中的super用法详解_Python中super函数用法实例分析

    本文实例讲述了python中super函数用法.分享给大家供大家参考,具体如下: 这是个高大上的函数,在python装13手册里面介绍过多使用可显得自己是高手 23333. 但其实他还是很重要的. 简 ...

  3. python classmethod_对Python中的@classmethod用法详解

    在Python面向对象编程中的类构建中,有时候会遇到@classmethod的用法. 总感觉有这种特殊性说明的用法都是高级用法,在我这个层级的水平中一般是用不到的. 不过还是好奇去查了一下. 大致可以 ...

  4. python中setattr()函数用法详解

    setattr() 函数对应函数 getattr(),用于设置属性值,该属性不一定是存在的. getattr()用法详见博文:python中getattr()函数用法详解_IT之一小佬的博客-CSDN ...

  5. Python中self的用法详解(链接传送)

    Python中的self是什么意思? Python新手,今天看了一篇详细易懂的self用法介绍,感觉开了些窍,这里附上链接,以方便复习. Python中self用法详解(转载自CLHugh)

  6. Python中import语句用法详解

    一. 什么是模块(module)? 在实际应用中,有时程序所要实现功能比较复杂,代码量也很大.若把所有的代码都存储在一个文件中,则不利于代码的复用和维护.一种更好的方式是将实现不同功能的代码分拆到多个 ...

  7. python中os库用法详解(总结)

    os库主要是对文件和文件夹进行操作,在Python中对⽂件和⽂件夹的操作要借助os模块⾥⾯的相关功能. 具体步骤如下: 1. 导⼊os模块 import os 2. 使⽤ os 模块相关功能 os.函 ...

  8. python中的*与**用法详解

    目录 前言 数值运算 序列(列表.元组)解包 函数声明的时候作为函数形参 函数调用的时候作为函数实参 前言   由于之前主要用的是C/C++,总把python中的*,**看成与指针相关,其实pytho ...

  9. python中的super用法详解_python super用法及原理详解

    这篇文章主要介绍了python super用法及原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 概念 super作为python的内建函数. ...

  10. python中布隆过滤器用法详解

    1.布隆过滤器的介绍 布隆过滤器(Bloom Filter),是1970年,由一个叫布隆的小伙子提出的. 它实际上是一个很长的二进制向量和一系列随机映射函数,二进制大家应该都清楚,存储的数据不是0就是 ...

最新文章

  1. linux内核数据结构之链表
  2. Bellman-Ford算法——为什么要循环n-1次?图有n个点,又不能有回路,所以最短路径最多n-1边。又因为每次循环,至少relax一边所以最多n-1次就行了!...
  3. “有效私域”加速,私域SaaS服务商提前蜕变
  4. c语言用数组实现栈的插入,C语言静态数组实现栈操作
  5. 函数、迭代器、生成器、装饰器
  6. 数组中查找並返回数组_剑指 Offer 04. 二维数组中的查找
  7. 51单片机几种精确延时(包含自动适应主时钟)
  8. ps清理原始数据程序_ps重要插件ACR最新版 让处理照片更简便 详尽说明附上 抓紧下载吧...
  9. php redis 是什么意思,redis协议是什么意思
  10. JS获取本机IP地址的方法
  11. 如何Altium Designer中输出元件清单(BOM表格)
  12. linux hd4000显卡驱动,AMD 即将放弃 Radeon HD2000/3000/4000 系列显卡的驱动支持
  13. Unity3D -- 天空盒(图文)
  14. pixhawk通信机制
  15. 测测是否适合学计算机,大学专业测评:测试自己适合什么专业
  16. Xilinx FPGA的DNA是什么?
  17. 常用证件照照片规格(英寸) (厘米) (像素)
  18. html5科技感logo,这些LOGO设计得太巧妙了!
  19. python里的jh是啥意思_JH是什么意思啊
  20. 2020大疆校招嵌入式B卷编程题

热门文章

  1. 项目进度管理+项目成本管理
  2. iphone11pro市场价_iPhone11 Pro Max:再见
  3. 【beyong-sms】一款支持多家短信服务商优美的PHP短信发送库
  4. 什么是rip协议其优缺点_ospf和rip 优缺点
  5. 销量持续下跌涨价或许会让苹果业绩雪上加霜
  6. 二进制部署多master节点的k8s集群-1.20以上稳定版本
  7. 2020-12-19 nn.CrossEntropyLoss()
  8. 如何使用scrapy中的ItemLoader提取数据?
  9. 猿创征文 第二季| #「笔耕不辍」--生命不息,写作不止#
  10. php转html为pdf后部分图片无法显示