Python中re模块的使用

        在Python中,处理正则表达式的模块是re模块。通过re模块,可以使用正则表达式来进行字符串的匹配、查找、替换等操作。执行效率特别高,可读性不强。

1.方法
match 从头开始匹配 返回Match 或者None

import re
r = re.match(".\w{10}", "Hello_world hi world", re.I)
print(type(r), r)
if r:print(r.group())

search 匹配整个字符串 返回Match 或者None

r = re.search(r"\d", "1a2b3c")
print(type(r), r)
if r:print(r.group())

fullmatch 从头开始匹配 返回Match 或者None

r = re.fullmatch(r"\d", "12345")
print(type(r), r)
if r:print(r.group())

finditer 找到所有,返回迭代器,其中的每一个元素都是Match

r = re.finditer(r"\d", "1a2b3c4d")
print(r, type(r))

findall 找到所有,返回列表或者空列表

split 切割,返回列表
sub 替换,返回字符串
subn 替换,返回元组(新字符串,替换个数)

r = re.split(r"\d", "1a2b3c4d", 2)
print(r, type(r))r = re.sub(r"\d", "+", "1a2b3c4d5e6f7g", 2)
print(r, type(r))r = re.subn(r"\d", "+", "1a2b3c4d5e6f7g", 2)
print(r, type(r))



2.字符匹配
. 匹配任意字符
\d 匹配数字
\D 非数字
\w 字母数字下划线
\W 非字母数字下划线
\s 空白字符 :空格 制表符 换行符
\S 非空白字符

r = re.findall(r".", "hello world+-*/")
r = re.findall(r"\d\D", "he1llo33 wor5ld+-*/")
r = re.findall(r"\w\W", "hel.lo33_wor_ld+-*/")
r = re.findall(r"\s\S", "hell o33\n world+-*/")print(type(r), r)


3.重复
* 出现0-n次
+ 有1-n次
? 有0或1个
.* 默认是贪婪模式(尽可能多匹配) .*? 非贪婪模式(尽可能少匹配)
{n}匹配n次
{m,n}匹配m-n次

import re
r = re.findall(r"a*b", "aaabcabcdc")
print(r, type(r))r = re.findall(r"a+b", "aaabcabcdc")
print(r, type(r))r = re.findall(r"a?", "aaabcabcdc")
print(r, type(r))r = re.findall(r".*?", "aaabcabcdc")
print(r, type(r))r = re.findall(r"\d{2}", "12345")
print(r, type(r))r = re.findall(r"\d{3,5}", "123456789")
print(r, type(r))

4.边界
^ 以开头
$ 以结尾
\b 匹配单词边界
\B 匹配非单词边界

r = re.findall(r"^.*?\b$", "hello world\tlove China")
print(r, type(r))

5.标识符
re.I 忽略大小写
re.M 多行模式,如果有换行符
re.S 单行模式

r = re.findall(r"^a.*?d$", "abcd\n1a2b3c4d\n+-*/", re.M)
print(r, type(r))


6.特殊字符
[abcdefg] 只能取一个
[^abcdefg] 不在abcdefg中间
[a-z0-9A-Z] 所有数字字母下划线 相当于\w

import re
r = re.findall(r"a[bc]d", "abdacdaedafd")
print(r, type(r))r = re.findall(r"^abc", "abdacdabcdedafd")
print(r, type(r))r = re.findall(r"a[a-z0-9A-Z_]d", "abdacdaedafda1da2da3da9daMdaZd")
print(r, type(r))


() 分组
\n 取前面的分组匹配的内容
( | ) 分组

import re
r = re.findall(r"()", "abcd1234abc123")
print(r, type(r))r = re.findall(r"(\d\d|ab)-\d", "13-24ab-2a")
print(r, type(r))

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

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

相关文章

单片机烧录方式 -- IAP、ISP和ICP

目录 背景 1 什么是ICP 2 什么是ISP 3 什么是IAP 4 总结 背景 对于51单片机,我们使用STC-ISP上位机软件通过串口进行程序的烧写;对于STM32系列单片机,我们既可以通过串口烧写程序,也能通过JLink或是STLink进行程序的烧写&am…

如何保护服务器的安全

互联网的迅速发展,让很多企业都很重视网络技术的使用,但是网络的传播速度比较快,同时容易造成数据、隐私方面的泄露现在每个企业基本有自己的服务器。有几点需要注意,可以参考: 1.基础密码安全 最基本的安全就是密码安…

linux 如何给服务器批量做免密,如何批量挂在磁盘

前提条件 所有机器网络互通,且已做了免密登录 linux服务器批量做免密脚本如下 #!/bin/bash # 定义服务器列表文件 SERVERS_FILE"host" # 定义生成的密钥的存储目录 KEY_DIR"/root/.ssh" # 检查是否输入了文件路径 if [ $# -ne 1 ]; then …

车载电子电器架构 —— 基础技术开发概述

车载电子电器架构 —— 基础技术开发概述 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗…

.Net Core与存储过程(一)

例子1 C# 调用存储过程 CREATE PROCEDURE [dbo].[spFunc] id BIGINT, isTrue BIT, str NVARCHAR (60), strZh NVARCHAR (60) AS BEGINSELECT *FROM tableAWHERE id idAND isTrue isTrueAND str strAND strZh strZh; ENDlong idLong 18; bool isBoolean true; string …

【element-ui】el-select multiple多选,表单校验问题解决方法

在项目开发过程中发现,el-select设置了multiple支持多选属性之后,el-select赋值之后,表单校验不通过 解决思路及解决方法: 1、首先看看v-model 、prop属性、rules校验是否正确,这里注意el-select的rules校验的trigger…

代码随想录三刷day17

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣144. 二叉树的前序遍历二、力扣145. 二叉树的后序遍历三、力扣94. 二叉树的中序遍历四、力扣144. 二叉树的前序遍历无、力扣145. 二叉树的后序遍历六、…

【Go语言】Go语言中的指针

Go语言中的指针 变量的本质是对一块内存空间的命名,我们可以通过引用变量名来使用这块内存空间存储的值,而指针则是用来指向这些变量值所在内存地址的值。 注:变量值所在内存地址的值不等于该内存地址存储的变量值。 Go语言中,…

42.do...while语句

目录 一.什么是do...while语句 二.语法 三.执行流程图 四.举例 五.视频教程 一.什么是do...while语句 do...while语句也是循环语句,和while语句的区别是,while语句是先判断表达式,如果表达式成立才会执行循环体中的内容,否则…

新书速览|Python数据分析快速上手

从零开始,小白轻松入手,一步一步教你学数据分析,让数据分析变得简单易懂 本书内容 《Python数据分析快速上手》通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Python进行数据分析应该掌握的各方面技术。本书内容包括Python基…

LeetCode215: 数组中的第K个最大元素

题目描述 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: [3,2,1,5,6,4…

区块链游戏解说:什么是 Arcade Champion

作者:lesleyfootprint.network 编译:cicifootprint.network 数据源:Arcade Champion Dashboard 什么是 Arcade Champion Arcade Champion 代表了移动游戏世界的重大革新。它将经典街机游戏的怀旧与创新元素结合在一起,包括 NF…

自学Python笔记总结(2——了解)

网络了解 网络调试助手 NetAssist.exe NetAssist.exe 使用方法请自行寻找 UDP协议 (只能一来一回的的发消息,不可连续发送) UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议。在通信开始之前,不需要建…

计算机网络体系结构

本篇博客是基于谢希仁编写的《计算机网络》和王道考研视频总结出来的知识点,本篇总结的主要知识点是第一章的计算机网络概述。 计算机网络概述 整体介绍 概念 计算机网络:是一个将分散的。具有独立功能的计算机系统,通过通信设备和线路连…

Android13 framework添加关机接口

framework层修改: t0_sys/frameworks/base/core/api/current.txt method RequiresPermission(android.Manifest.permission.REBOOT) public void reboot(Nullable String);method public void rebootp();t0_sys/frameworks/base/core/java/android/os/IPowerManager…

Zookeeper基础入门-1【集群搭建】

Zookeeper基础入门-1【集群搭建】 一、Zookeeper 入门1.1.概述1.2.Zookeeper工作机制1.3.Zookeeper特点1.4.数据结构1.5.应用场景1.5.1.统一命名服务1.5.2.统一配置管理1.5.3.统一集群管理1.5.4.服务器动态上下线1.5.5.软负载均衡 1.6.Zookeeper官网1.6.1.Zookeeper下载1.6.2.历…

day01-HTML-CSS

一、Web 开发 1. 什么是 Web ? Web:全球广域网,也称为万维网(www,World Wide Web),能够通过浏览器访问的 网站。 2. Web 网站的开发模式 3. Web 标准 Web 标准也称为网页标准,由一系列的标准组成&#xff…

ubuntu开发板问题汇总

1 上网 网线一端连接到开发板 一端连接到无线路由网口 发现局域网可以相互ping通,但是ping www.baidu.com不通,提示消息 ping: bad address www.baidu.com 需要下面命令配置网关 route add default gw 192.168.31.1 然后再ping www,baidu.com即…

yii2框架 mysql两个点的经纬度计算距离排序查询

$query Location::find()->select([id, name])->addSelect([ distance > "ST_DISTANCE(POINT(:latitude, :longitude), POINT(latitude, longitude))", ])->orderBy(distance)->params([ :latitude > $targetLatitude, // 目标纬度 :…

REVERSE-COMPETITION-VNCTF-2024

REVERSE-COMPETITION-VNCTF-2024 前言TBXObaby_c2yunobfuseko 前言 ko的随机数算法没看出来,可惜~ 这里给自己打个广告:东南网安研二在读,求实习,求内推,求老板们多看看我QAQ TBXO 通过字符串定位到main函数汇编视…