re模块的常用方法

1、compile(pattern[,flags])

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

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

结果是:

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

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

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

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

结果是:

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

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

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

结果是:

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

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

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

结果是:

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

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

import re            #导入re模块
text = '''All that doth flow we cannot liquid name
Or else would fire and water be the same;
But that is liquid which is moist and wet
Fire that property can never get.
Then 'tis not cold that doth the fire put out
But 'tis the wet that makes it die, no doubt.''' #测试用的字符串
pattern = re.compile(r'\bt\w*\b',re.I) #匹配以t或T开头的单词
print(pattern.sub('%',text)) #将符合条件的单词替换为%
print()
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. 简约才是王道? CardView 的使用

    发现个好看的东东 CardView,他在support v7包中~~ 顾名思义就是卡片view,可以设置阴影,圆角,等等.. 样子是这样的: 或者你还可以放到listview里 是这样的: http: ...

  2. 序列化与反序列化中serialVersionUID的作用(通俗易懂)

    serialVersionUID:字面意思上是序列化的版本号,这个在刚刚接触java编程时,学序列化大家一般都不会注意到,在你一个类序列化后除非你强制去掉了myeclipse中warning的功能,在 ...

  3. Dynamics CRM ADFS及IFD部署后延长系统注销时间

    Dynamics CRM 部署IFD后,一段时间后登陆状态会失效,系统会提示让你重新登陆,可以通过延长失效时间来规避 在 powershell中执行如下指令 Set-ADFSRelyingPartyT ...

  4. 小强的HTML5移动开发之路(2)——HTML5的新特性

    来自:http://blog.csdn.net/dawanganban/article/details/17592787 一.画布(Canvas) 画布是网页中的一块区域,可所以用JavaScript ...

  5. 【一天一道LeetCode】#56. Merge Intervals

    一天一道LeetCode系列 (一)题目 Given a collection of intervals, merge all overlapping intervals. For example, ...

  6. Android scrollview嵌套webview滑动冲突的解决方案

    在Android开发中有时我们需要在scrollview中嵌套webview这时你会发现这两者的滑动事件产生了冲突导致:webview很难被滑动,即使被滑动了一点也非常不顺畅.解决方案也比较简单只需要 ...

  7. 江湖问题研究-- intent传递有没有大小限制,是多少?

    出门一步,便是江湖,江湖上有许多流言. 比如这条: intent传递是有大小限制的,具体在40KB左右. 当然也有传言说是1M左右. 数百头母驴为何半夜惨叫? 小卖部安全套为何屡遭黑手? 女生宿舍内裤 ...

  8. wing带你玩转自定义view系列(1) 仿360内存清理效果

    本篇是接自 手把手带你做自定义view系列 宗旨都是一样,带大家一起来研究自定义view的实现,与其不同的是本系列省去了简单的坐标之类的讲解,重点在实现思路,用简洁明了的文章,来与大家一同一步步学习. ...

  9. Java之美[从菜鸟到高手演变]之设计模式三

    本章是关于设计模式的最后一讲,会讲到第三种设计模式--行为型模式,共11种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模 ...

  10. 如何在Android上编写高效的Java代码

    转自:http://www.ituring.com.cn/article/177180 作者/ Erik Hellman Factor10咨询公司资深移动开发顾问,曾任索尼公司Android团队首席架 ...