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) # ...
随机推荐
- ZOJ - 3953 Intervals 【贪心】
题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3953 题意 给出N个区间,求去掉某些区间,使得剩下的区间中,任何 ...
- vue axios拦截器介绍
关于axios的拦截器是一个作用非常大,非常好用的东西.分为请求拦截器和响应拦截器两种.我一般把拦截器写在main.js里. 1. 请求拦截器 请求拦截器的作用是在请求发送前进行一些操作,例如在每个请 ...
- ps 工具栏使用
1:称动工具,快捷键是v,则选中移动工具:按shift和左键,可移动当前层移到另一层的中间对齐.如果不用sfhift键,则只是移动:alt+左键上移动,则复制层:alt+中间滚轮,则为放大和缩小. 2 ...
- nginx启动不了
nginx简介 Nginx是一个高性能的HTTP和反向代理服务器. 支持的操作系统众多,windows.linux. MacOS X: 可实现负载均衡: Rewrite功能强大: 电商架构大部分都采用 ...
- 快速解决Android中的selinux权限问题【转】
本文转载自:http://blog.csdn.net/mike8825/article/details/49428417 版权声明:本文为博主原创文章,未经博主允许不得转载. 关于selinux的详细 ...
- [Vim 使用]vim 自动括号补全配置
打开Vim的配置文件,windows 上面的配置文件在vim 的安装目录下,_vimrc,使用记事本或vim打开 在下方加入如下代码 inoremap ( ()<ESC>i inorema ...
- C语言中的排序算法--冒泡排序,选择排序,希尔排序
冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没 ...
- CISCO-从路由器上下载IOS
准备工作:一台装有TFTP服务器的PC,一台带有IOS的路由器,并用网线连接上 设置路由器接口和计算机网卡的IP地址在同一网段,并且互相能ping通. 1,安装Cisco TFTP Server 2, ...
- C# 获取QQ好友列表信息的实现
分析部分 当我们访问QQ空间的时候,大家可以在右侧的发现一个这样的统计信息 当点击这个链接的时候,会跳转到 这样一个URL 这个URl可以管理好友,当然也就能读取到好友 上面我们是在浏览器中的操 ...
- springboot中使用@Value读取配置文件
一.配置文件配置 直接配置 在src/main/resources下添加配置文件application.properties 例如修改端口号 #端口号 server.port=8089 分环境配置 在 ...