python常识系列14-->正则表达式基础之re模块
前言
勤奋的含义是今天的热血,而不是明天的决心,后天的保证。
一、正则表达式是什么?
- 描述了一种字符串匹配的模式(pattern)
- 功能一:用来检查一个字符串串是否含有某种子字符串
- 功能二:将匹配的子串(满足规则的字符串)进行替换
- 功能三:从某个字符串中取出符合某个条件的子
- ......
二、re模块简介
- re模块是python独有的匹配字符串的模块
- 该模块中的很多功能是基于正则表达式实现的
- Python自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式
三、正则表达式基础语法
需要使用re模块,必须对正则表达式有一定的掌握,以下先介绍正则的一些基础知识。
3.1 正则表达式中的元字符
元字符 | 匹配内容说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\n | 匹配一个换行符 |
\t | 匹配一个制表符 |
\b | 匹配一个单词的结尾 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
\W | 匹配非字母或数字或下划线 |
\D | 匹配非数字 |
\S | 匹配非空白符 |
a|b | 匹配字符a或字符b |
() | 匹配括号内的表达式,也表示一个组 |
[] | 匹配字符组中的字符 |
[^] | 匹配除了字符组中字符的所有字符 |
3.2 正则表达式中的量词
量词 | 用法说明 |
---|---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
四、re模块代码基础及应用
4.1 re模块中的函数介绍
- re.compile(pattern,flags = 0 ):用于编译正则表达式,生成一个正则表达式对象
- re.search(pattern,string,flags = 0 ):扫描字符串以查找正则表达式模式产生匹配项的第一个位置 ,然后返回相应的match对象。
- re.match(pattern,string,flags = 0 ):如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的匹配对象。
- re.fullmatch(pattern,string,flags = 0 ):如果整个字符串与正则表达式模式匹配,则返回相应的match对象。
- re.split(pattern,string,maxsplit = 0,flags = 0 ):通过出现模式来拆分字符串。
- re.findall(pattern,string,flags = 0 ):以string列表形式返回string中pattern的所有非重叠匹配项。
- re.finditer(pattern,string,flags = 0 ):返回一个迭代器,该迭代器在string类型的RE 模式的所有非重叠匹配中产生匹配对象。
- re.sub(pattern,repl,string,count = 0,flags = 0 ):返回通过用替换repl替换字符串中最左边的不重叠模式所获得的字符串。
4.2 re模块 macth方法 基础写法一
import re
#group()方法得到匹配的字符串,如果字符串没有匹配,则返回None
value = re.match( 'class\d8' , 'class58' ).group()
print( value )
4.3 re模块 macth方法 基础写法二
import re
#创建正则表达式对象
str_c = re.compile('class\d8')
#group()方法得到匹配的字符串,如果字符串没有匹配,则返回None
value = str_c.match('class58').group()
print( value )
上述代码说明:上述两种写法都可以完成 re模块 的应用,4.2的例子是直接把正则表达式放入match的第一个参数中;4.3的例子是先创建正则表达式对象,由对象进行match方法的调用。
4.4 re模块 search方法 基础
import re
#创建正则表达式对象
str_c = re.compile('\d8')
value = str_c.search('class58').group()
print( value )
上述代码说明:如果吧search()改为match()方法,则会报错,因为 match()仅在字符串的开头匹配,search()检查匹配项,在字符串中的任何位置检查匹配项
五、小结
- 学习re模块需要先有正则表达式的知识做铺垫
- 上述由于篇幅原因,关于其它的正则表达式的应用读者可以根据我的例子去进行扩展
python常识系列14-->正则表达式基础之re模块的更多相关文章
- python常识系列08-->logging模块基础入门
前言 努力从今天开始,成功从"零"开始. 一.logging模块是什么? 是Python内置的标准模块,主要用于输出运行日志 二.日志是什么? 日志是代码的必要组成部分 记录日志能 ...
- PYTHON 爬虫笔记四:正则表达式基础用法
知识点一:正则表达式详解及其基本使用方法 什么是正则表达式 正则表达式对子符串操作的一种逻辑公式,就是事先定义好的一些特定字符.及这些特定字符的组合,组成一个‘规则字符串’,这个‘规则字符串’用来表达 ...
- python常识系列20-->python利用xlutils修改表格内容
前言 世上的事,只要肯用心去学,没有一件是太晚的.要始终保持敬畏之心,对阳光,对美,对痛楚. 一.xlutils是什么? 是一个提供了许多操作修改excel文件方法的库: 属于python的第三方模块 ...
- python常识系列07-->python利用xlwt写入excel文件
前言 读书之法,在循序而渐进,熟读而精思.--朱熹 抽空又来写一篇,毕竟知识在于分享! 一.xlwt模块是什么 python第三方工具包,用于往excel中写入数据:(ps:只能创建新表格,不能修改表 ...
- 利用Python进行数据分析(14) pandas基础: 数据转换
数据转换指的是对数据的过滤.清理以及其他的转换操作. 移除重复数据 DataFrame里经常会出现重复行,DataFrame提供一个duplicated()方法检测各行是否重复,另一个drop_dup ...
- Python正则表达式基础指南
1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十 ...
- 正则表达式基础---转自 Python正则表达式指南 前边
1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十 ...
- python正则表达式基础篇
1.正则表达式基础 1.1简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大 ...
- python正则表达式基础,以及pattern.match(),re.match(),pattern.search(),re.search()方法的使用和区别
正则表达式(regular expression)是一个特殊的字符序列,描述了一种字符串匹配的模式,可以用来检查一个字符串是否含有某种子字符串. 将匹配的子字符串替换或者从某个字符串中取出符合某个条件 ...
随机推荐
- The 2014 ACM-ICPC Asia Mudanjiang Regional First Round C
题意: 这个是The 2014 ACM-ICPC Asia Mudanjiang Regional First Round 的C题,这个题目当时自己想的很复杂,想的是优先队列广搜,然后再在 ...
- UVA11388GCD LCM
题意: 输入两个整数G,L,找出两个正整数a,b使得gcd(a ,b)=G,lcm(a ,b)=L,如果有多组解,输出最小的a的那组,如果没解,输出-1. 思路: 比较简单,如 ...
- 【实用小技巧】spring与springmvc自动扫描包重复的问题解决
spring对应配置文件为: <!-- 配置自动扫描的包,此时要排除Controller --> <context:component-scan base-package=" ...
- Codeforces Beta Round #73(Div2)
A - Chord 题意:就是环中有12个字符,给你三个字符,判断他们之间的间隔,如果第一个和第二个间隔是3并且第二个和第三个间隔是4,那么就输出minor,如果第一个和第二个间隔是4并且第二个和第三 ...
- 1.初级篇——最基础的"穷竭搜索”
A.Lake Counting(POJ 2386) 题意: 由于最近的降雨,农夫约翰田地的各个地方都有水汇聚,用N x M(1 <= N <= 100; 1 <= M <= 1 ...
- 并查集板子+kruskal
最近在学最小生成树得时候又用到了并查集,一起来整理一下 1.并查集 并查集就是字面意思,将两个单独得集合合并成一个大的集合. 并查集关键在于两个操作:合并和查找 先要完成查找操作(合并操作在查找的基础 ...
- 加载usbserial驱动后,为什么adb不可用了?
某设备提供了USB串口功能,上位机(Host端)可以通过USB串口与之通信.对于Linux上位机,比如Ubuntu,自带usbserial驱动,当安装usbserial驱动后,上位机就会生成ttyU ...
- 如何用Python画一个圣诞树呢?
# ./sd.py * *** ***** ******* ********* |[root@bogon shengdan]# vim sd.py[root@bogon shengdan]# cat ...
- 无法开机 如果您的手机黑屏无法开机,可以按照以下方式操作尝试: 如果是,使用原装充电器或使用弱电流方式充电(例如使用电脑USB接口充电)充电15-30分钟后尝试重新开机;注意:电量过低引起的无法开机,刚插入充电器时可能不亮屏但呼吸灯闪烁状态。
https://www.mi.com/service/support/startup 无法开机 如果您的手机黑屏无法开机,可以按照以下方式操作尝试: 技术支持 如何刷机 无法开机 手机自动关机.重启 ...
- 【转载】ltp压力测试结果分析脚本
博客园 首页 新随笔 联系 管理 订阅 随笔- 8 文章- 0 评论- 0 ltp压力测试结果分析脚本 最近工作性质发生了改变,在做操作系统方面的测试.接手的第一个任务是做ltp stres ...