python day25 正则表达式
正则表达式
1. 正则表达式
re模块:re模块本身只是用来操作正则表达式的,和正则本身没关系。
正则表达式:是一种规则 匹配字符串的规则。
为什么要有正则表达式?
1.匹配字符串
- 一个人的电话号码
- 一个人的身份证号
- 一台机器的ip地址
2.表单验证
- 验证用户输入的信息是否准确
11位 全数字 1开头 第二个数3-9之内的数
- 银行卡号
3.爬虫
从网页源码中获取一些链接、重要数据
正则规则(元字符,量词):
第一条规则 : 本身是哪一个字符,就匹配字符串中的哪一个字符。
第二条规则 : 字符组[字符1字符2],一个字符组就代表匹配一个字符,只要这个字符出现在字符组里,那么就说明这个字
符能匹配上
字符组中还可以使用范围
所有的范围都必须遵循ascii码从下到大来指定。如:[0-9] [a-z] [A-Z]
2. 元字符
\d(digit) \w(word) \s(space) \t(table) \n(next)
[0-9] \d 表示所有的数字
- d --> d
- \d --> \是转义符,转义符转义了d,让d能够匹配所有0-9之间的数
- [\d] [0-9] \d 没有区别 都是要匹配一位数字
\w 表示 大小写字母、数字、下划线
\s 表示空白、空格、换行符、制表符
\t 匹配制表符
\n 匹配换行符
\D \W \S
\D 表示所有的非数字
\W 表示除数字、字母、下划线之外的所有字符
\S 表示非空白
[\d\D] [\W\w] [\S\s] 匹配所有一切字符
. 表示除了换行符之外的任意内容
\ . 在.前加一个 转义符。表示取消.的意义。
[] [^]
[] 字符组 :只要在中括号内的所有字符都是符合规则的字符
[^ ]非字符组 :只要在中括号内的所有字符都是不符合规则的字符
^ $
^ 表示一个字符的开始
^a
abc abc abc # 表示要匹配开始的a
$ 表示一个字符的结束
c$
abc abc abc # 表示要匹配结束的c
^ $ 两个同时存在时,他俩之间的正则规定长度必须和要匹配的内容长度一致。
| ()
| 表示或,注意:如果两个规则有重叠部分,总是长的在前面,短的在后面
() 表示分组,给一部分正则规定为一组,| 这个符号的作用域就可以缩小了
3. 量词
{n} 表示只能出现n次
{n,m}表示至少出现n次,至多出现m次
? 表示匹配0次或1次 表示可有可无 但是有只能有一个 比如小数点
. 表示匹配1次或多次
*表示匹配0次或多次 表示可有可无 但是有可以有多个 比如小数点后n位
什么时候会用到匹配0次?
1.匹配任意的2位整数 \d{2}
2.匹配任意的保留两位小数的数字 \d\.\d{2}
3.匹配一个整数或者小数 \d+\.\d+|\d+ \d+\.?\d* \d+(\.\d+)?
4. 贪婪匹配
正则表达式默认贪婪匹配,总是会在符合量词条件的范围内尽量多匹配。
正则表达式遵循了回溯算法,回溯算法导致了贪婪匹配。
\d{7,12}
adljdkjsljdlj
非贪婪匹配 (惰性匹配):总是匹配符合条件范围内尽量小的字符串。
元字符 量词 ,在量词后面加一个?,表示去最少的匹配
元字符 量词 ? x :表示按照元字符规则在量词范围内匹配,一旦遇到x就停止
.*?x 匹配任意的内容任意多次遇到x就立即停止
(\d+?x .*?x )非贪婪匹配在爬虫中会常用
# 身份证号
# 15位 全数字 首位不为0
# 18位 前17位全数字 首位不为0 最后一位可能是x和数字
[1-9](\d{16}(\d|x)|\d{14})
[1-9](\d{16}[\dx]|\d{14})
[1-9]\d{14}(\d{2}[\dx])?
python day25 正则表达式的更多相关文章
- [python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】
[python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pytho ...
- Python 进阶 - 正则表达式
1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十 ...
- python study - 正则表达式
第 7 章 正则表达式 7.1. 概览 7.2. 个案研究:街道地址 7.3. 个案研究:罗马字母 7.3.1. 校验千位数 7.3.2. 校验百位数 7.4. 使用 {n,m} 语法 7.4.1. ...
- python使用正则表达式文本替换
2D客户端编程从某种意义上来讲就是素材组织,所以,图片素材组织经常需要批量处理,python一定是最佳选择,不管是win/linux/mac都有一个简单的运行环境 举两个应用场景: 如果不是在某个文件 ...
- python的正则表达式 re
python的正则表达式 re 本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以是Unicode字符,这点不用担心,python会处理地和Ascii字符一 ...
- Python之正则表达式(re模块)
本节内容 re模块介绍 使用re模块的步骤 re模块简单应用示例 关于匹配对象的说明 说说正则表达式字符串前的r前缀 re模块综合应用实例 正则表达式(Regluar Expressions)又称规则 ...
- Python:正则表达式详解
正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能 ...
- 【Python】正则表达式纯代码极简教程
<Python3正则表达式>文字版详细教程链接:https://www.cnblogs.com/leejack/p/9189796.html ''' 内容:Python3正则表达式 日期: ...
- 【Python】正则表达式简单教程
说明:本文主要是根据廖雪峰网站的正则表达式教程学习,并根据需要做了少许修改,此处记录下来以备后续查看. <Python正则表达式纯代码极简教程>链接:https://www.cnblogs ...
随机推荐
- Linux虚拟机与Windows共享文件
1.找到“虚拟机” >>> “设置” 2.选项 >>> 共享文件夹 >>> 总是启用 >>> 添加,选择你想要共享的文件. 注 ...
- mysql-10临时表、复制表
1.创建临时表 mysql临时表在我们需要保存一些临时数据时非常有用. 临时表只在当前连接可见,当关闭连接时,mysql会自动删除表并释放所有空间. 如果使用客户端创建临时表,只有在管不客户端程序时才 ...
- 使用GridFsTemplate在mongodb中存取文件
spring-data-mongodb之gridfs mongodb除了能够存储大量的数据外,还内置了一个非常好用的文件系统.基于mongodb集群的优势,GridFS当然也是分布式的,而且备份也 ...
- springcloud(四) ribbon和feign
Ribbon使用 order-service工程: application.yml: server: port: 9010 #order 服务都是用90 开头的端口 spring: applicati ...
- 在 ubuntu1604 中 搭建 i 屁 sec 虚拟专用连接服务器
1.wget https://git.io/vpnsetup -O vpnsetup.sh 2.vim vpnsetup.sh 修改一些内容: 主要有三个参数:IPSEC的预共享秘钥,用户名,密码 3 ...
- 埃氏筛法求素数&构造素数表求素数
埃氏筛法求素数和构造素数表求素数是一个道理. 首先,列出从2开始的所有自然数,构造一个序列: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1 ...
- java web 开发 IDE 下载地址
https://www.eclipse.org/downloads/eclipse-packages/
- open File Browser in shell
[maxosx] open /usr/include [ubuntu] 发现三个,如下: xdg-open xxxx.pdf gnome-open . nautilus . 喜欢把它alias一下 . ...
- jqzoom插件图片放大功能的一些BUG
建议使用cloud-zoom插件,jqzoom插件就不要使用了 点击查看——图片放大镜——jQuery插件Cloud Zoom 刚开始使用的是jqzoom插件,但问题太多了,就不说插入到页面中使用了, ...
- CVE-2017-7494:Linux Samba named pipe漏洞
描述: 漏洞是由于代码中一个管道申请命令的判断导致的,可以通过构造特定请求执行上传的so文件. 漏洞影响了Samba 3.5.0 之后到4.6.4/4.5.10/4.4.14中间的所有版本. 测试: ...