Python之正则表达式笔记
概述
概念
Regular Expression
一种文本模式,描述在搜索文本时要匹配的一个或多个字符串
典型场景
数据验证、文本扫描、文本提取、文本替换、文本分割
语法
字面值
普通字符
需转义:\ ^ $ . | ? * + () [] {}
元字符
匹配
单字,预定义元字符
. 除\n外的所有字符 \d 数字,等同于[0-9] \D非数字,等同于[^0-9]
\s 空白字符 \t\n\r\f\v \S 非空白字符[^\t\n\r\f\v]
\w 字母数字字符[a-zA-Z0-9_] \W 非字线数字[^a-zA-Z0-9_]
批量备选 | yes|no
量词(字符、元字符,字符集如何重复)
? 0或1次 * 0或多次 + 1或多次
特定: {n,m}范围次数 {n}n次 {n,}至少n次 {,m}最多m次
贪婪与非贪婪
贪婪(默认):尽量匹配最大范围结果
非贪婪
尽量匹配最小的范围结果
方法:量词后追加? 例:?? *? +?
边界匹配
^ 行首 $ 行尾 \b 单词边界 \B 非单词边界 \A 输入开头 \Z 输入结尾
注:或因上下文差异有不同表
Python 正则
模块 import re
RegexObject 正则对象
模式对象,表现编译后的正则表达式(编译为字节码并缓存)
编译 re.compile('模式')
.findall() 1查找所有非重叠匹配项 2返回list
.match(string[,pos[,endpos]]) 1匹配,仅从开始位置 2返回MatchObject
.search(string[,[pos[,endpos]]) 1任意位置搜索 2返回MatchObject
.finditer() 1查找所有匹配项 2返回包括MatchObject元素的迭代器
MatchObject 匹配对象
表现被匹配的模式
.group() 1参数为0或空返回整个匹配 2有参时返回特定分组匹配细节 3参数也可以是分组名称
.groups() 返回包含所有子分组的元组
.start() 返回特定分组的起始索引
.end() 返回特定分组的终止索引
.groupdict() 以字典表形式返回分组名及结果
Group 编组
场景 1从匹配模式中提取信息 2创建子正则以应用量词 3限制备选项范围
4重用正则模式中提取的内容
声明 1(模式) 2(?P<name>模式)
引用 1匹配对象内 m.group('name') 2模式内 (?P=name) 3表现内 \g<name>
应用
字符串操作 1 .split(string, maxsplit=0) 分割字符串
2 .sub(repl, string, count=0) 替换字符串
3 .subn(repl, string, count=0) 替换并返回替换数量
编译标记 1 改变正则的默认行为 2 re.I 忽略大小写 3 re.M 匹配多行
4 re.S 指定"."匹配所有字符,包括\n …
模块级别操作 1 re.purge() 清理正则缓存 2 re.escape() 逃逸字符
Python之正则表达式笔记的更多相关文章
- Python的正则表达式笔记
1. "先抓大再抓小": 遇到一个正则表达式无法一次性筛选出所需内容时, 可以先在一个范围内筛选第一次, 再在小范围中筛选第二次. 2. pattern = re.compile( ...
- (转)Python爬虫学习笔记(2):Python正则表达式指南
以下内容转自CNBLOG:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 1. 正则表达式基础 1.1. 简单介绍 正则表达式并 ...
- 《简明python教程》笔记一
读<简明Python教程>笔记: 本书的官方网站是www.byteofpython.info 安装就不说了,网上很多,这里就记录下我在安装时的问题,首先到python官网下载,选好安装路 ...
- python核心编程--笔记
python核心编程--笔记 的解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找pyt ...
- Python网络爬虫笔记(五):下载、分析京东P20销售数据
(一) 分析网页 下载下面这个链接的销售数据 https://item.jd.com/6733026.html#comment 1. 翻页的时候,谷歌F12的Network页签可以看到下面 ...
- Python:正则表达式详解
正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能 ...
- Python标准库笔记(8) — pprint模块
struct模块提供了用于在字节字符串和Python原生数据类型之间转换函数,比如数字和字符串. Python版本: 2.x & 3.x 该模块作用是完成Python数值和C语言结构体的Pyt ...
- python基础===正则表达式(转)
正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能 ...
- Python的正则表达式re模块
Python的正则表达式(re模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Python使用re模块提供了正则表达式处理的能力.如果对正则表达式忘记的一干二净的话,可以花费 ...
随机推荐
- HDU 6041 I Curse Myself ——(仙人掌图,tarjan,转化)
题解见这个博客:http://blog.csdn.net/ME495/article/details/76165039. 复杂度不太会算..这个经典问题的解法需要注意,维护队列里面只有k个元素即可.另 ...
- 关于SQLServer 中行列互转的实例说明
这几天在做一个招标系统中审批模块,其中关于报价信息这块,用到了pivot和unpivot来实现数据的行列互转,下面简单介绍一下,实际案例,便于回忆和记录相关的条件下使用的情况.pivot 与 unpi ...
- OpenWrt笔记
## 1. OpenWrt目录结构说明 作者:辛勤的摆渡人 来源:CSDN 原文:https://blog.csdn.net/hunter168_wang/article/details/507805 ...
- Shell中的$0、$1、$2的含义
在 shell 中我们会见到 $0.$1.$2这样的符号,这是什么意思呢? 简单来说 $0 就是你写的shell脚本本身的名字,$1 是你给你写的shell脚本传的第一个参数,$2 是你给你写的she ...
- linux nand flash常用命令
使用命令前用cat /proc/mtd 查看一下mtdchar字符设备:或者用ls -l /dev/mtd*#cat /proc/mtddev: size erasesize namemt ...
- redis不支持多个数据库实例但是支持多个字典
Redis多个数据库 注意:Redis支持多个数据库,并且每个数据库的数据是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念. Redis是一个字典结构的存储服务器,而实际上一个Redi ...
- Request模块入门学习
使用指令npm install --save request来安装模块,然后使用var request = require('request')完成引用. 对于GET请求,主要是获取目的url中数据. ...
- golang 循环创建闭包 问题排查
][]string{ { { "邀请码是什么", "我没有邀请码", "这个邀请码我可以随便填吗", "邀请码可以填他的手机号吗& ...
- python使用redis实现协同控制的分布式锁
python使用redis实现协同控制的分布式锁 上午的时候,有个腾讯的朋友问我,关于用zookeeper分布式锁的设计,他的需求其实很简单,就是节点之间的协同合作. 我以前用redis写过一个网络锁 ...
- 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_04-用户认证-认证服务查询数据库-查询用户接口-接口开发
定义dao 权限放在授权的课程里面做,现在先不管.我们还需要查企业信息,就是用户所属的公司 公司表 对应关系在xc_company 这是一个关系 表 这个表里有唯一索引 user_id 所以根据use ...