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个区间,求去掉某些区间,使得剩下的区间中,任何 ...
- 网页中的title中设置图标
每个网页中title旁边的图标是怎么实现的呢?像这个百度的图标,今天做了一下,很简单,下面记录一下. 做一个图片,一般的图标都可以,把图标后缀改为.ico格式就OK了,放在项目路径下,保证该图片可以被 ...
- java连接oracle的几种方式
jdbc连接(驱动包ojdbc6.jar)String driver = "oracle.jdbc.OracleDriver"; //驱动标识符 String url = &quo ...
- 基于深度学习和迁移学习的识花实践——利用 VGG16 的深度网络结构中的五轮卷积网络层和池化层,对每张图片得到一个 4096 维的特征向量,然后我们直接用这个特征向量替代原来的图片,再加若干层全连接的神经网络,对花朵数据集进行训练(属于模型迁移)
基于深度学习和迁移学习的识花实践(转) 深度学习是人工智能领域近年来最火热的话题之一,但是对于个人来说,以往想要玩转深度学习除了要具备高超的编程技巧,还需要有海量的数据和强劲的硬件.不过 Tens ...
- ACM应该学什么(知乎学长)
网络上流传的答案有很多,估计提问者也曾经去网上搜过.所以根据自己微薄的经验提点看法. 我ACM初期是训练编码能力,以水题为主(就是没有任何算法,自己靠动脑筋能够实现的),这种题目特点是麻烦,但是不难, ...
- windows下使用emacs+plink远程编辑erlang文件
1)plink.exe属于putty套件, 注册到环境变量;emacs的bin目录也要注册到环境变量中; 2)在.emacs中增加如下: (require 'tramp)(setq tramp-def ...
- centos服务器安装配置Postgre9.6
安装: STEP1:下载对应rpm yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64 ...
- Linux 下Input系统应用编程实战
作者:杨源鑫(也是我们的校园代理) 经授权转载于公众号嵌入式开发圈,有些许修改. 什么是input子系统?不管是什么操作系统,都有一个程序用于管理各种输入设备,哪些是输入设备?比如,电脑键盘.鼠标,智 ...
- 如果后台用framset框架布局,session过期,整个跳出回 登录页面的方法
如果session过期了,登录页面会在framset框架的右边显示,只能用 js 来做,让整个框架跳出去: 然而,这里 js 必须要用“top”才可以,作用是让整个framset都跳转,直接用 win ...
- Codeforces Round #408( Div2)
Bank Hacking 阅读题,读完之后手算一下可以发现每一个bank被hack所需要的strength无非分为三种情况. 1. $a_i$,当且仅当i为第一个选择的点. 2. $a_i+1$,当且 ...