一文入门re 正则表达式

news2024/9/24 1:20:17

一、常用方法

(一)匹配

一般使用方法
第一个参数:正则模式
第二个参数:需要处理的字符串
第三个参数:附加处理方法

result从任意位置开始匹配,返回match,没有匹配到返回None
result = re.search(r"abc","1bcabcdbcd",re.I)
print(result,type(result),result.start(),result.end(),result.group())

findall以列表的形式返回所有匹配到的字符串
result = re.findall(r"abc","abcabcdAbcde")
print(result)

 

match从第一个字符开始匹配,如果第一个字符不匹配,就返回None
result = re.match(r"abc","1bcabcdAbcde")
print(result)   # None
fullmatch匹配整个字符串,返回match或None
result = re.fullmatch(r"1\w+e","1bcabcdAbcde")
print(result)

 

finditer返回迭代器,每一个元素都是Match
result = re.finditer(r"abc","abcabcdAbcde")
for data in result:
    print(data.group())

 

(二)替换

一般使用方法

第一个参数:正则模式 第二个参数:替换成的内容 第三个参数:需要替换的字符串 第四个参数:替换次数 第五个参数:附加标识

sub把所有匹配成功的都进行替换,返回替换过后的字符串

result = re.sub(r"abc","星星","abcabcdAbcde")
print(result)

 

subn元组形式返回替换过的字符串和替换次数
result = re.subn(r"abc","星星","abcabcdAbcde")
print(result)

 

(三)切割

第一个参数是正则模式 第二个参数是需要切割的字符串 第三个参数是最大切割次数

split返回切割之后的内容

result = re.split(r"abc","abcabcdAbcde")
print(result)

二、特殊字符

# \w 匹配数字 字母 下划线
# result = re.findall(r"\w","abc123+_*?-")
# print(result)
# \W 匹配非数字 字母 下划线
# result = re.findall(r"\W","abc123+_*?-")
# print(result)


# \d 匹配数字
# result = re.findall(r"\d","abc123+_*?-")
# print(result)
# \D 匹配非数字
# result = re.findall(r"\D","abc123+_*?-")
# print(result)


# \S匹配 空白
# result = re.findall(r"\s","a bc123+_*?-\t\n")
# print(result)
# \S匹配 非空白
# result = re.findall(r"\S","a bc123+_*?-\t\n")
# print(result)

# . 除了\n不匹配,其他都匹配
# result = re.findall(r".","ac +-*/ .46\t)\n")
# print(result)
# . 加上re.S后匹配所有
# result = re.findall(r".","ac +-*/ .46\t)\n",re.S)
# print(result)

# ^ 开头
# result = re.findall(r"^a","ac +-*/\nab .46\t)")
# print(result)
# re.M 可以匹配\n
# result = re.findall(r"^a","ac +-*/\nab .46\t)",re.M)
# print(result)

# $ 结尾
# result = re.findall(r" $","ca +-*/\nba .46\t ")
# print(result)
# re.M 可以匹配\n
# result = re.findall(r" $","ca +-*/ \nba .46\t ",re.M)
# print(result)


# 贪婪:尽可能匹配多个
# * 代表有>=0个
# + 代表有>=1个
# ? 代表有1个或者0个
# result = re.findall(r"\d*","123456789")
# print(result)
# result = re.findall(r"\d+","123456789")
# print(result)
# result = re.findall(r"\d?","123456789")
# print(result)

# 非贪婪:尽可能匹配少个数
# 在贪婪模式后追加一个?
# result = re.findall(r"\d*?","123456789")
# print(result)
# result = re.findall(r"\d+?","123456789")
# print(result)
# result = re.findall(r"\d??","123456789")
# print(result)


# {n}匹配n次
result = re.findall(r"\d{2}","123456789")
print(result)
# {m,n}匹配m-n次
result = re.findall(r"\d{2,4}","123456789")
print(result)
# {m,n}? 非贪婪匹配
result = re.findall(r"\d{2,4}?","123456789")
print(result)
# []匹配其中一个
result = re.findall(r"[1-9a-z]","123456789abcdfaz")
print(result)
# |或者
result = re.findall(r"[1-9]|[a-z]","123456789abcdfaz")
print(result)
# ()分组
result = re.findall(r"(.*?)","123456789abcdfaz")
print(result)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2053759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MiniCPM-V: A GPT-4V Level MLLM on Your Phone论文阅读

大模型的趋势:模型性能越来越好,模型参数变小,端边设备计算能力变强。 MiniCPM-V优点 结果好、OCR能力突出、多分辨率、多语言、易于部署 模型结构 图片encoder适用vit。输入整体以及切片。切片使用自适应算法,通过计算分数&am…

揭秘图数据库:如何颠覆社交网络分析的游戏规则

在当今信息化时代,社交网络的数据量以指数级的速度增长,人们在社交网络中产生了海量的交互数据。如何从这些复杂的数据中提取有价值的信息,成为了数据科学和社交网络分析领域的一大挑战。图数据库作为一种有效的数据管理和分析工具&#xff0…

Anzo Capital视角下马丁格尔交易策略的利与弊

在Anzo Capital,我们深入探讨了马丁格尔交易策略的多面性。这种策略因其简单性而受到一些交易者的欢迎,但同时也存在着不可忽视的风险。本文将客观分析其优势和潜在缺陷,帮助投资者在Anzo Capital平台上做出更明智的决策。 马丁格尔策略的核…

JavaEE项目总结(1)

一、在vue项目中安装axios 由于需要使用axios框架进行异步请求,所以需要在vue项目中安装axios框架。在官方下载速度较慢,所以选择更换镜像源(我使用的是华为云镜像) 在项目终端中输入npm config set registry http://mirrors.…

MES系统:制造业转型升级的驱动力与效益源泉

制造业之所以需要并采纳MES系统(Manufacturing Execution System,制造执行系统),主要是出于以下几个方面的考虑和需求。MES系统能够为企业带来显著的好处,具体体现在以下几个方面: 制造业需要MES系统的原因…

信贷风控架构一张图

记得刚入门风控时,由于做的模型岗,总有一种不能窥探风控全貌的疑惑。随着经验的积累,以及一些岗位的体验,慢慢对风控有了更清晰的认知。本文以一张图的形式简单地呈现信贷风控架构,让你能快速窥探信贷风控全貌。 文章目录 一、什么是风险管控?二、信贷风控架构一张图三、…

PCDN日常应用--公共资源利用

1、前言 PCDN 是通过在 CDN 的边缘节点上部署代理服务器,来实现主动调度和传输内容的方法。当用户请求内容时,PCDN 将根据各个节点的负载情况、距离、传输速度等一系列因素来动态选择最优的节点来提供内容。这样的调度方式使得 PCDN 在面对大规模请求时能…

健康管理系统解决方案

产品简介 脉购CRM健康管理系统是一款集会员健康管理以及会员数字化营销于一体的系统解决方案,旨在帮助企业更好地提供个性化的健康服务,维护好会员关系,通过有效的营销手段增加健康会员粘性和满意度,最终达到业绩增长的目的。 核…

云计算第三阶段---DBA Day2 -- Day4

DBA DAY2 一、常用函数、 常用函数 按使用方式分类按用途分类 ○单行函数 ○分组函数 ○字符函数 ○数学函数 ○日期函数 字符函数实例: ●LENGTH(str):返字符串长度,以字节为单位 mysql> select length(abc); --------------- | l…

【NXP-MCXA153】TFT驱动移植

介绍 GC9A01是一款1.28寸的圆形TFT显示屏模块,分辨率为240x240,支持三种颜色格式:RGB444、RGB565、RGB666,本次实验将在NXP-MCXA153开发板上移植TFT LCD驱动 移植流程 ① 绑定TFT LCD上面的GPIO,如SCL_PIN、SDA_PIN…

Java - File、IO流

File类 File是java.io.包下的类,File类的对象,用于代表当前操作系统的文件(可以是文件、文件夹) File类只能对文件本身进行操作,不能读写文件里面存储的数据。 创建File类的对象: //创建file对象//1.具体…

House of Roman / malloc_printerr间接调用malloc函数执行malloc_hook

文章目录 House of Roman介绍:原理:例子:思路:分析:利用: House of Roman 介绍: House of Roman 这个技巧说简单点其实就是 fastbin attack 和 Unsortbin attack 结合的一个小 trick。该技术用…

python-字符串操作(赛氪OJ)

[题目描述] 给定长度为 n 的只有小写字母的字符串 s ,进行 m 次操作,每次将 [l,r] 范围内所有 c1 字符改成 c2 ,输出操作完的字符串。输入格式: 第一行两个数 n , m , 第二行一个字符串 s , 之后 m 行&…

Ubuntu修改命令提示符格式PS1

命令提示符组成 通过Xshell进入Ubuntu的默认提示符是这样的 rootDESKTOP:~# root: 当前登录用户DESKTOP:主机名~: 当前目录名(即用户主目录)#:超级用户权限(root用户显示)$: 普通用户权限(非root用户显示) 修改命令提示符 step1…

linux 环境下 配置jenkins前端服务

前期准备 如果没有&#xff0c;需要安装插件 <b>HH:mm:ss</b> <b>HH:mm:ss.S</b> $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS! 连接服务器的密码 测试 前端部署 需要安装nodejs的插件 执行脚本 node -v npm install rm -rf ./dist…

未解决:不同类型的数据用memcpy然后打印(printf)出问题

引子&#xff1a; 本来是搜memcpy在拷贝两个数组时两数组下标类型不同的问题&#xff0c;即&#xff0c;若一个数组是很长&#xff0c;其下标用long型&#xff0c;要将此数组的一小段拷贝到另一个数组中&#xff0c;这另一个数组的下标只需要用int型&#xff0c;不确定会不会出…

C++高性能编程:ZeroMQ vs Fast-DDS发布-订阅模式下性能对比与分析

文章目录 0. 引言1. 目标&#xff1a;ZeroMQ与Fast-DDS性能对比2. ZeroMQ vs Fast-DDS - 延迟基准测试2.1 一对一发布-订阅延迟2.2 一对多发布-订阅延迟 3. ZeroMQ vs Fast-DDS - 吞吐量基准测试4. 方法论5. 结论6. 参考 0. 引言 高要求的分布式系统催生了对轻量级且高性能中间…

MATLAB口罩检测系统

一、应用背景 作为数字图像处理和计算机视觉领域的一个重要组成部分&#xff0c;利用摄像机对图像进行采集&#xff0c;从图像中检测人脸并进行口罩穿戴的识别的有着非常重要的研究意义和应用价值。面对突如其来的新型肺炎疫情&#xff0c;人们生活秩序被严重打乱。跟普通流感…

前端Vue监听路由变化, 点击页面内按钮跳转菜单更改导航菜单选中状态

1.问题描述 当我们进入页面时的菜单导航栏是默认选中的状态如图 点击博客园效果如图 问题1&#xff1a; 但是当我们点击页面上方返回按钮时&#xff0c;导航栏选中状态没有改变 分析问题1&#xff1a; 这个问题是因为页面改变后页面里面存储的菜单导航栏的is-active属性没有改…

WIFI 密码

要破解 WIFI 密码&#xff0c;首先要抓到 WIFI 的握手包&#xff0c;要想得到 WIFI 的握手包&#xff0c;就需要在监听时刚好有设备连接了该 WIFI&#xff0c;但这就需要运气加成&#xff0c;因此可以我们可以主动将该 WIFI 的设备踢下去&#xff0c;一般设备就会自动连接该 WI…