正则表达式
Posted white-black
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。
作用:
表达对字符串数据的 匹配 过滤 提取的表达式(字符串)
概念:
用事先定义好的特定字符,或这些特定字符的组合,来对字符串进行匹配筛选
特点:
通用性很强,适用于很多编程语言
语法功能强大
re模块:
是操作正则表达式的模块
# 导入re模块 import re # 使用match方法进行匹配操作 result = re.match(正则表达式,要匹配的字符串) # 如果上一步匹配到数据的话,可以使用group方法来提取数据 result.group()
import re # 正则表达式前面全部都加上r 没毛病 result = re.match(r"itcast", "itcast.cn") result.group() print(result.group()) 输出:itcast
匹配单个字符
. 匹配任意一个字符 除了 可以通过r.S模式让 . 匹配 .==数据.
re.match(r"python.org", "python org", re.S).group()
[] 匹配[]中列举的字符 [-]表示范围 [0-9] , [^0-9]表示取反
d 匹配数字 即0-9
D 匹配非数字 即不是数字
s 匹配空白 即 空格、tab键等等
S 匹配非空白
w 匹配非特殊字符 即 a-z 、A-Z、 0-9、 _、汉字 python3中可以匹配汉字
re.match(r"python.orgw", "python.org?").group() # py3默认为unicode模式 可以匹配i汉字
W 匹配特殊字符 即非字母、非数字、非汉字
#coding=utf-8 import re ret = re.match(".","M") print(ret.group()) ret = re.match("t.o","too") print(ret.group()) ret = re.match("t.o","two") print(ret.group()) 运行结果: M too two
匹配开头和结尾
^匹配字符串开头
$匹配字符串结尾
[^指定字符]: 表示除了指定字符都匹配
量词
{m,n} 匹配 至少m次 至多n次 {1,} {0,}
{m} 匹配 m次
* 匹配任意次
+ 匹配至少一次
? 匹配0或者1次
匹配分组
目的:提取部分数据
匿名分组
创建 (正则)
获取.group(分组编号)
0分组存储整体结果
用户分组从1开始
引用 编号
命名分组
创建(?P<分组名>正则)
获取.group(分组名称)
引用(?P=name)
| (a|b|c) 匹配|左右任意一个表达式
函数
match(正则,数据)->匹配对象 从头开始匹配
search(正则,数据)->匹配对象 从头开始搜索 直到数据搜索完成
findall (正则,数据)->列表 查找所有与正则表达式匹配的数据 以列表形式输出
sub (正则,替换数据,数据,次数)->替换后的数据
split (正则,数据)->切割后的列表
贪婪与懒惰(非贪婪)
默认贪婪 尽可能多
前提 满足整体的匹配结果
r字符
自动对数据的进行转义
不添加r时
html = """ """ import re print(re.findall(r"https://.+?.(?:jpg|png)", html))
以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性