正则表达式
2017-12-18 00:23:51 22 举报
AI智能生成
正则表达式,欢迎大家一起分享学习
作者其他创作
大纲/内容
概述
概念
一种文本模式,描述在搜索文本时要匹配的一个或多个字符串
典型场景
数据验证
文本扫描
文本提取
文本替换
文本分割
语法
字面值
普通字符
需转义
\
^
$
.
|
?
*
+
()
{}
[]
元字符
匹配
单字,预定义元字符
. 除\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(r'模式')
.findall()
查找所有非重叠匹配项
返回list
.match(string[,pos[,endpos]])
匹配,仅从起始位置
返回 MatchObject
.search(string[,[pos[,endpos]])
任意位置搜索
返回MatchObject
.finditer()
查找所有匹配项
返回包括MatchObject 元素的迭代器
MathObject 匹配对象
表现被匹配的模式
.group()
参数为0 或空返回整个匹配
有参时返回特定分组匹配细节
参数也可以是分组名称
.groups()
返回包含所有子分组的元祖
.start() 返回特定分组的起始索引
.end() 返回特定分组的终止索引
.span() 返回特定分组的起止索引元祖
.groupdict() 以字典表形式返回分组名及结果
Group 编组
场景
从匹配模式中提取信息
创建子正则以应用量词
限制备选项范围
重用正则模式中提取的内容
声明
(模式)
(?P<naem>模式)
引用
匹配对象内 m.group('name')
模式内(?P=name)
表现内 \g<name>
应用
字符串操作
.split(string, maxsplit=0)
分割字符串
.sub(repl, string, count=0)
替换字符串
.sub(repl, string, count=0)
替换并返回替换数量
编译标记
改变正则的默认行为
re.I 忽略大小写
re.M 匹配多行
re.S 指定"."匹配所有字符,包括\n
..........
模块级别操作
re.purge() 清理正则缓存
re.escape() 逃逸字符
0 条评论
下一页