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)是一个特殊的字符序列,描述了一种字符串匹配的模式,可以用来检查一个字符串是否含有某种子字符串. 将匹配的子字符串替换或者从某个字符串中取出符合某个条件 ...
随机推荐
- 使用BurpSuite抓取HTTPS网站的数据包
昨天面试,技术官问到了我如何使用BurpSuite抓取https网站的数据包,一时间没能回答上来(尴尬!).因为以前https网站的数据包我都是用Fiddler抓取的,Fiddlert自动帮我们配置好 ...
- 3.PHP条件语句及其字符串相关函数
PHP条件语句 <?php $number = rand(1,100); if($number % 2 == 0){ echo "%2"; } ...
- [CTF]ROT5/13/18/47编码
[CTF]ROT5/13/18/47编码 --------------------- 作者:adversity` 来源:CSDN 原文:https://blog.csdn.net/qq_4083 ...
- Spring的配置文件 (SSM maven项目)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 远程连接mysql出现"Can't connect to MySQL server 'Ip' ()"的解决办法
1.大多是防火墙的问题(参考链接:https://blog.csdn.net/jiezhi2013/article/details/50603366) 2.上面方法不能解决,不造成影响情况下可关闭防火 ...
- Django(3)pycharm创建项目
创建项目 我们创建django项目有两种方式,命令行方式和使用pycharm工具创建,本文就介绍常用的pycharm工具创建 首先点击django,输入项目的名称,选择创建好的虚拟环境,最后点击c ...
- [bug] Docker:Error ruuning deviceCreate(createSnapDevice) dm_task_run failed
原因 删除容器时报错,元信息出错,需要修复 最后一个参数要改成自己docker元信息路径,如: thin_check --clear-needs-check-flag /var/lib/docker/ ...
- too many open files问题详解
too many open files问题详解 feelgood3000关注0人评论2616人阅读2018-08-23 09:47:52 一 单个进程打开文件句柄数过多 ulimit中的nofi ...
- 【转载】ltp压力测试结果分析脚本
博客园 首页 新随笔 联系 管理 订阅 随笔- 8 文章- 0 评论- 0 ltp压力测试结果分析脚本 最近工作性质发生了改变,在做操作系统方面的测试.接手的第一个任务是做ltp stres ...
- python基础之字符串类型
一.python字符串类型概述 定义:在单引号\双引号\三引号内,由一串字符组成 name='Test' name = 'test' print(type(name)) --------------- ...