re模块的常用方法

1、compile(pattern[,flags])

创建模式对象,一般配合其他方法使用。例如:

  1. import re #导入re模块
  2. text = 'All that doth flow we cannot liquid name' #测试用的字符串
  3. pattern = re.compile(r'\bd\w+\b') #编译正则表达式对象,查找以d开头的单词
  4. print(pattern.findall(text)) #使用正则表达式对象的findall()方法

结果是:

2、search(pattern,string[,flags]) && match(pattern,string[,flags])

search()方法是在整个字符串中寻找模式,返回匹配的对象或者None。用于在整个字符串或指定范围中进行搜索。

match()方法是从字符串的开始处匹配模式,返回匹配的对象或者None。用于在字符串开头或指定位置进行搜索,模式必须出现在字符串开头或指定位置。例如:

  1. import re #导入re模块
  2. text = 'All that doth flow we cannot liquid name' #测试用的字符串
  3. pattern = re.compile(r'\b[a-zA-Z]{4}\b') #查找4个字母长的单词
  4. print(pattern.match(text)) #从字符串开头开始匹配,失败返回空值
  5. print(pattern.search(text)) #在整个字符串中搜索,成功

结果是:

3、findall(pattern,string[,flag])

列出字符串中模式的所有匹配项。用于在字符串中查找所有符合正则表达式的字符串并以列表形式返回。例如:

  1. import re #导入re模块
  2. text = 'All that doth flow we cannot liquid name' #测试用的字符串
  3. pattern = re.compile(r'\b\w*a\w*\b') #查找所有含有字母a的单词
  4. print(pattern.findall(text))
  5. example = 'Or else would fire and water be the same;'
  6. print(re.findall(r"\w+er",example)) #查找所有以字母组合ly结尾的单词

结果是:

4、split(pattern,string[,maxsplit=0])

根据模式匹配项分割字符串。例如:

  1. import re #导入re模块
  2. text = 'All..that...doth.flow...we.cannot...liquid name' #测试用的字符串
  3. print(re.split('[\.]+',text)) #使用指定字符作为分隔符进行分割
  4. print(re.split('[\.]+',text,maxsplit=3)) #最多分隔3次
  5. print(re.split('[\.]+',text,maxsplit=2)) #最多分隔2次
  6. print(re.split('[\.]+',text,maxsplit=1)) #最多分隔1次

结果是:

5、sub(pat,repl,string[,count=0])

将字符串中所有pat的匹配项用repl替换。例如:

  1. import re #导入re模块
  2. text = '''All that doth flow we cannot liquid name
  3. Or else would fire and water be the same;
  4. But that is liquid which is moist and wet
  5. Fire that property can never get.
  6. Then 'tis not cold that doth the fire put out
  7. But 'tis the wet that makes it die, no doubt.''' #测试用的字符串
  8. pattern = re.compile(r'\bt\w*\b',re.I) #匹配以t或T开头的单词
  9. print(pattern.sub('%',text)) #将符合条件的单词替换为%
  10. print()
  11. print(pattern.sub('%',text,1)) #只替换1次

结果是:

注意:函数参值flags的值可以是re.I(表示忽略大小写);re.L(支持本地字符集的字符);re.M(多行匹配模式);re.S(使元字符“.”匹配任意字符);re.U(匹配Unicode字符);re.X(忽略模式中的空格,并可以使用#注释)的不同组合。

正则表达式re模块小结的更多相关文章

  1. Python常用模块小结

    目录 Python常用模块小结 一.Python常用模块小结 1.1 time模块 1.2 datetime模块 1.3 random模块 1.4 os模块 1.5 sys模块 1.6 json模块 ...

  2. python正则表达式Re模块备忘录

    title: python正则表达式Re模块备忘录 date: 2019/1/31 18:17:08 toc: true --- python正则表达式Re模块备忘录 备忘录 python中的数量词为 ...

  3. python 正则表达式re模块

    #####################总结##############    优点:  灵活, 功能性强, 逻辑性强.               缺点:  上手难,旦上手, 会爱上这个东西    ...

  4. python基础之正则表达式 re模块

    内容梗概: 1. 正则表达式 2. re模块的使⽤ 3. 一堆练习正则表达式是对字符串串操作的一种逻辑公式. 我们一般使用正则表达式对字符串进行匹配和过滤.使用正则的优缺点: 优点: 灵活,功能性强, ...

  5. python记录_day23 正则表达式 re模块

    一. 正则表达式 使用python的re模块之前应该对正则表达式有一定的了解 正则表达式是对字符串操作的一种逻辑公式.我们一般使用正则表达式对字符串进行匹配和过滤. 正则的优缺点: 优点:灵活, 功能 ...

  6. Python面试题之Python正则表达式re模块

    一.Python正则表达式re模块简介 正则表达式,是一门相对通用的语言.简单说就是:用一系列的规则语法,去匹配,查找,替换等操作字符串,以达到对应的目的:此套规则,就是所谓的正则表达式.各个语言都有 ...

  7. javascript之正则表达式基础知识小结

    javascript之正则表达式基础知识小结,对于学习正则表达式的朋友是个不错的基础入门资料.   元字符 ^ $ . * + ? = ! : | \ / ( ) [ ] { } 在使用这些符号时需要 ...

  8. 基于iCamera测试mt9m034 1280X960 高动态相机模块小结

    基于iCamera测试mt9m034 高动态相机模块小结 首先看看此模块的特性 mt9m034 高动态 CMOS模块 1280*960像素 5.48 V/lux-sec >115db 摄像头模块 ...

  9. 基于iCamera测试500w摄像头-mt9p001,mt9p031,mt9p001模块小结

    基于iCamera测试500w摄像头-mt9p001,mt9p031,mt9p001模块小结 先看实物 M12标准无畸变镜头效果 标准CS镜头效果 iCamera底板+mt9p001安装效果 再看看c ...

随机推荐

  1. Leetcode_26_Remove Duplicates from Sorted Array

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41558551 Remove Duplicates from ...

  2. (四十八)Quartz2D引擎进阶

    图形上下文栈: 应用,修改过上下文后,下一次画会在这个基础上进行,如果清空状态,需要上下文栈. 可以先把原来的上下文保存起来,然后恢复: - (void)drawRect:(CGRect)rect { ...

  3. Dynamics CRM2013 Lookup Filtering using addCustomFilter

    dynamics crm中对lookup视图的过滤是一个很平常性的需求,在2011的时候都是用添加自定义视图的方式例如下面这段示例代码 <span style="font-size: ...

  4. java文件的基本操作示例

    一.获得控制台用户输入的信息 public String getInputMessage() throws IOException...{ System.out.println("请输入您的 ...

  5. 认识 SurfaceView

    SurfaceView是基于View视图进行扩展的视图类,适用于2D游戏开发,主要特点有: [1]surfaceView中对于画布的重绘是由一个新的线程去绘制,因此可以处理一些耗时的操作 [2]sur ...

  6. AngularJS中的依赖注入

    依赖注入 | Dependency Injection 原文链接: Angular Dependency Injection翻译人员: 铁锚翻译时间: 2014年02月10日说明: 译者认为,本文中所 ...

  7. Java 截取中英文混合字符串

    题目: 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串. 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入&q ...

  8. 【Matlab编程】哈夫曼编码的Matlab实现

    在前年暑假的时候,用C实现了哈夫曼编译码的功能,见文章<哈夫曼树及编译码>.不过在通信仿真中,经常要使用到Matlab编程,所以为了方便起见,这里用Matlab实现的哈夫曼编码的功能.至于 ...

  9. GitHub前50名的Objective-C动画相关库相关推荐,请自行研究

    GitHub的Objective-C的动画UI库其实是最多的一部分,GitHub有相当一部分的动画大牛,如Jonathan George,Nick Lockwood,Kevin,Roman Efimo ...

  10. Linux下MySQL备份以及crontab定时备份

    1. 备份某个数据库 ################################################################## # 备份某个数据库 ############ ...