python 基础(十四) 正则表达式
正则表达式
概念: 正则匹配就是一个模糊的匹配 只要符合我的匹配规则 就会认为是正确的数据(精确的匹配)
1.[] #代表原子表把想要匹配的内容写入原子表中 匹配包含的任意一位字符
[a] #匹配小写字母a
[ab] #匹配小写字母a或者b
[aAbB] #匹配字母a或b
[195] #匹配任意一位数字
[a-z] #匹配任意一位小写字母
2.^ #在原子表外称之为以...作为开头 放在原子表内叫取反 相当于 \A
^[abc] #匹配以a/b/c字符作为开头
[^abc] #匹配任意一位小写字母a/b/c以外的字符
^abc #匹配以小写字母abc开头的内容
^[0-9]
^[a-zA-Z0-9]
3.$ #以...作为结尾 相当于 \Z
^[1][3-9][0-9]{9}$ ^和$通常是组合使用 真正的限制匹配数据的正确性
4.{m} #控制匹配前面数量的m次 不能单独使用 和普通的内容一起使用或者和原子表
#匹配3个a的操作
[a][a][a]
aaa
a{3}
[a]{3}
{4} #错误写法
[a-zA-Z]{3}
5.{m,n} #控制匹配前面数量的m-n次 不能单独使用 和普通的内容一起使用或者和原子表
#匹配qq号码
5-11
^[1-9][0-9]{4,10}$
010-778192
101-621331
[01]{3}\-[0-9]{6}
6.{m,} #表示匹配前面数量至少m次
[a-z]{3,}
#1 匹配1-99的正则
[1-9][0-9]{0,1}
#2 匹配任意一位正负整数和小数 ?
[\-]{0,1}[1-9]
7.? #可有可无 匹配前面的正则表达式的 0次或者一次 类似于 {0,1} 或指明一个非贪婪的限定符
[1-9][0-9]?
[\-]?[1-9]
8. . #匹配换行符\n以外的任意一位字符
9. * #匹配前面表达式的任意次 相等于{0,}
10. .* #匹配除换行符以外的任意字符任意次 贪婪模式
11. .*? #匹配除换行符以外的任意字符任意次 非贪婪模式
12. + #匹配前面表达式的至少1次 相等于{1,}
13. .+ #匹配除换行符以外的任意字符至少1次 贪婪模式
14. .+? #匹配除换行符以外的任意字符至少次 非贪婪模式
15. () #1.代表一个单元 2.子存储
16. | #表示或
#匹配手机号码或者qq号码
(^[1-9][0-9]{4,10}$)|(^[1][3-9][0-9]{9}$)
正则函数
使用正则函数需要导入内置的 re模块
import re
修正符
re.I 忽略大小写
re.M 多行模式 改变^和$的作用
re.S 改变.的行为 可以匹配换行符
特殊意义的字符
\d 相当于 [0-9]
\D 相当于 [^0-9]
\w 相当于 [a-zA-Z0-9_]
\W 相当于[^a-zA-Z0-9_]
\s 匹配空白字符
\S 匹配非空白字符
(1) re.match(pattern,string,flags) 匹配一次 必须从头开始
pattern:正则表达式
string: 要匹配的字符串的内容
flags: 修正符
返回结果:
匹配成功 返回对象
匹配失败 返回None
注意:
match必须从第一位开始匹配 如果第一位没有符合的 则匹配失败 类似于在正则前方添加^
只匹配一次
取值
group() 将值取出
group([index]) 索引可有可无 如果正则内没有存在括号 则不需要传index
groups() 正则内括号的值 以元组形式进行返回
(2) re.search(pattern,string,flags) 匹配一次包含就可以
pattern:正则表达式
string: 要匹配的字符串的内容
flags: 修正符
返回结果:
匹配成功 返回对象
匹配失败 返回None
只匹配一次
和match的区别 只要字符串中包含就可以
(3) re.findall(pattern,string,flags) 匹配多次
pattern:正则表达式
string: 要匹配的字符串的内容
flags: 修正符
返回结果:
匹配成功返回装有数据的列表
匹配失败返回空列表
(4) re.finditer() 将查询结果变成迭代器进行返回 配合next方法进行操作
next(re.finditer())
(5) re.sub/re.subn 正则替换 返回匹配的次数/不返回匹配的次数
sub(pattern, repl, string, count=0, flags=0)
subn(pattern, repl, string, count=0, flags=0)
(6) re.split 正则拆分
split(pattern, string, maxsplit=0, flags=0):
(7) re.compile(pattern,flags) 编译成正则表达式 可以多次使用
将正则和函数分开使用 提高执行效率 正则表达式 可以多次使用
使用方法
pattern = re.compile("pattern",flags)
pattern.函数名(匹配的字符串)
修正符
re.I(re.IGNORECASE)
re.S(re.DOTALL)
re.M(re.MULTILINE)
python 基础(十四) 正则表达式的更多相关文章
- python学习(十四)正则表达式
原文链接 ## 什么是正则表达式`正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑 ...
- python基础十四之匿名函数
匿名函数 处理简单问题的简化函数,关键字lambda. # 格式:函数名 = lambda 参数:返回值 anonymity = lambda s: s ** 0.5 print(anonymity( ...
- Python 基础语法(四)
Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)------------------------- ...
- Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式
Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式 目录 Pycharm使用技巧(转载) Python第一天 安装 shell 文件 Py ...
- 孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘
孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天发现了python的类中隐藏着一些特殊的私有方法. 这些私有方法不管我 ...
- 孤荷凌寒自学python第十四天python代码的书写规范与条件语句及判断条件式
孤荷凌寒自学python第十四天python代码的书写规范与条件语句及判断条件式 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 在我学习过的所有语言中,对VB系的语言比较喜欢,而对C系和J系 ...
- Bootstrap<基础十四> 按钮下拉菜单
使用 Bootstrap class 向按钮添加下拉菜单.如需向按钮添加下拉菜单,只需要简单地在在一个 .btn-group 中放置按钮和下拉菜单即可.也可以使用 <span class=&qu ...
- 初学 Python(十四)——生成器
初学 Python(十四)--生成器 初学 Python,主要整理一些学习到的知识点,这次是生成器. # -*- coding:utf-8 -*- ''''' 生成式的作用: 减少内存占有,不用一次性 ...
- Python第二十四天 binascii模块
Python第二十四天 binascii模块 binascii用来进行进制和字符串之间的转换 import binascii s = 'abcde' h = binascii.b2a_hex(s) # ...
随机推荐
- 在oc中一些常用的宏定义总结
1.打印CGRect,Size,Point #define NSLogRect(rect) NSLog(@"%s x:%.4f, y:%.4f, w:%.4f, h:%.4f", ...
- TortoiseSVN使用笔记
TortoiseSVN版本冲突详解 下列步骤展示了如何将分支A中的修改合并到分支B. 1.在分支B的本地副本目录中选择"合并(Merge)". 2.选择“合并一个版本范围(Me ...
- oracle rac常用的网络检查命令
oracle的集群管理软件和数据库对私网依赖性很大,很多集群问题最后都可以归结到网络层面. 当集群出现问题时检查网络信息是必要的. 1.查看MTU的大小,确认所有节点的公网和私网网卡的MTU大小相同 ...
- HDU4990 Reading comprehension —— 递推、矩阵快速幂
题目链接:https://vjudge.net/problem/HDU-4990 Reading comprehension Time Limit: 2000/1000 MS (Java/Others ...
- 坡道定点停车30cm
坡道定点停车与起步是科目二五项必考之一,想要顺利通过该项考试,学员需要掌握两个要点,一个是车身距离右侧边线30cm以内的距离,一个是定点时机.本期,元贝小编先和大家分享半坡起步右边30公分怎么看. ...
- hadoop 添加,删除节点
http://www.cnblogs.com/tommyli/p/3418273.html
- TestNG测试用例编写和执行
编写TestNG用例测试基本上包括以下步骤: 编写业务逻辑 针对业务逻辑中涉及的方法编写测试类,在代码中插入TestNG的注解 直接执行测试类或者添加一个testng.xml文件 运行 TestNG. ...
- Python GIL、线程锁、信号量及事件
GIL是什么? GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念.就好比C++是一套语言(语法)标准,但是可以用不同的编译器来编译成可执行代码.有名的编 ...
- 基于logstash+elasticsearch+kibana的日志收集分析方案(Windows)
一 方案背景 通常,日志被分散的储存不同的设备上.如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志.这样是不是感觉很繁琐和效率低下.开源实时日志分析ELK平台能够完美的 ...
- im资源
https://github.com/oikomi/FishChatServer https://github.com/subrosa-io https://github.com/WhisperSys ...