Python中re模块的使用

正则表达式是一种强大的工具,用于处理字符串的匹配、搜索和替换操作。在Python中,我们可以使用内置的re模块来执行各种正则表达式操作。

1 基本用法

  • re.match(pattern, string): 从字符串的开头匹配一个模式。返回match对象或None。
  • re.search(pattern, string): 在整个字符串中搜索一个模式。返回match对象或None。
  • re.fullmatch(pattern, string):匹配整个字符串。返回match对象或None。
  • re.findall(pattern, string): 查找所有匹配的子字符串。返回列表。
  • re.sub(pattern, replacement, string): 替换匹配的子字符串。
  • re.subn(pattern, replacement, string):替换匹配的子字符串,返回一个元组(新字符串,替换个数)。
  • re.split(pattern, string): 切割,返回列表。

2 正则表达式语法

. : 匹配任意字符,除了换行符。
*: 匹配前一个字符0次或多次。
+: 匹配前一个字符1次或多次。
?: 匹配前一个字符0次或1次。
[]: 匹配括号内的任意字符。
|: 匹配两个模式之一。
^: 匹配字符串的开头。
$: 匹配字符串的结尾。

3 示例

导入 re 模块

import re

3.1 匹配邮箱地址

pattern = r'\w+@\w+\.\w+'
email = 'john.doe@example.com'
if re.match(pattern, email):print(f"{email} 是有效的邮箱地址")
else:print(f"{email} 不是有效的邮箱地址")

3.2 查找所有数字

text = "Today is 2024-02-28."
numbers = re.findall(r'\d+', text)
print("找到的数字:", numbers)

4 扩展

4.1 字符串匹配

  • \d: 匹配前一个数字。
  • \D:匹配前一个非数字。
  • \w:匹配前一个数字或字母或下划线。
  • \W:匹配前一个非数字、字母、下划线。
  • \s:匹配前一个空白字符(换行符、制表符、空格)。
  • \S:匹配前一个非空白字符。
  • \b:匹配单词边界。
  • \B:匹配非单词边界
  • re.I:不区分大小写。
  • re.M:多行模式,如果有换行符。

4.2 分组

分组

():代表一个分组
在findall中使用可以只返回分组中的内容

代表分组

\n: 按顺序代表前面的分组相同的内容,\2 就代表前面的第二个分组。

示例

import re
s = "hihi"
r = re.match(r'(hi)\1', s)
print(r.group)

解释: s 代表 两个hi组成的字符串,而分组(hi)就代表hi,而\1就代表分组(hi),因此可以匹配成功。

4.3 特殊字符

  • [abc] :匹配abc中的一个。
  • [^abc] :匹配非abc中的一个。
  • [a-zA-Z0-9_] :匹配数字、字母、下划线,代表\w。
  • {n}: 匹配前面的字符n次。
  • {m, n}:匹配前面的字符m或n次。

5 .*?

没了解过这个符号的人可能不知道这个是什么意识,这个符号是一个神器
它可以匹配任何字符。
其实还有一个符号 .,它同样可以匹配任何字符,但它是尽可能多的匹配,而 **.?**是尽可能少的匹配。

在这里插入图片描述
本文到此结束,如果觉得可以的话,可以点个关注哦🌹🌹🌹

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

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

相关文章

matplotlib矩阵和图像的可视化表示

文章目录 伪彩图等高线colorbar matplotlib教程:初步📈子图绘制📈坐标投影📈刻度设置📈共享坐标轴📈内容填充📈文字和字体 伪彩图 【plt】中提供了三种矩阵可视化函数,分别是imsho…

【市工信】2024年青岛市绿色工厂、绿色工业园区等绿色制造示范申报

科大睿智小编从青岛市工信局了解到&#xff0c;为深入贯彻绿色发展理念&#xff0c;牢固树立绿色低碳发展导向&#xff0c;进一步完善绿色制造体系&#xff0c;培育绿色制造先进典型&#xff0c;根据《工业和信息化部关于印发<绿色工厂梯度培育及管理暂行办法>的通知》&a…

win11安装nodejs

一、下载安装包 链接: https://pan.baidu.com/s/1_df8s1UlgNNaewWrWgI59A?pwdpsjm 提取码: psjm 二、安装步骤 1.双击安装包 2.Next> 3.勾选之后&#xff0c;Next> 4.点击Change&#xff0c;选择你要安装的路径&#xff0c;然后Next> 5.点击Install安装 二、…

Neo4j aura 官方网站快速入门新手教精读-从官方教程学习知识图谱

Neo4j 官方网站快速入门新手教精读 本文旨在为Neo4j新手提供一份全面的入门指南。除了基础的文本解释&#xff0c;我在里面还插入了每一步骤的详细截图或者自己画的图&#xff0c;从官方了解知识肯定比自己乱看要权威一些&#xff0c;有看不懂的不要纠结了解大概意思即可&#…

基于ssm游泳会员管理系统+vue论文

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统游泳会员信息管理难度大&#xff0c;容错率低&#xff0c…

MATLAB知识点:利用智能缩进整理代码

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自​第4章&#xff1a;MATLAB程序流程控制 小技巧&#x…

桥接模式(Bridge Pattern) C++

上一节&#xff1a;适配器模式&#xff08;Adapter Pattern&#xff09; C 文章目录 0.理论1.组件2.使用场景 1.实践 0.理论 桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;它的核心思想是将抽象部分与其实现部分分离&#xff0c;使它们可…

RISC-V特权架构 - 中断与异常概述

RISC-V特权架构 - 中断与异常概述 1 中断概述2 异常概述3 广义上的异常3.1 同步异常3.2 异步异常3.3 常见同步异常和异步异常 本文属于《 RISC-V指令集基础系列教程》之一&#xff0c;欢迎查看其它文章。 1 中断概述 中断&#xff08;Interrupt&#xff09;机制&#xff0c;即…

浅谈密码学

文章目录 每日一句正能量前言什么是密码学对称加密简述加密语法Kerckhoffs原则常用的加密算法现代密码学的原则威胁模型&#xff08;按强度增加的顺序&#xff09; 密码学的应用领域后记 每日一句正能量 人生在世&#xff0c;谁也不能做到让任何人都喜欢&#xff0c;所以没必要…

幻兽帕鲁服务器哪家便宜?阿里云腾讯云京东云华为云对比

幻兽帕鲁服务器哪家便宜&#xff1f;阿里云腾讯云京东云华为云对比&#xff0c;阿里云更便宜&#xff0c;26元1个月。游戏服务器租用多少钱一年&#xff1f;1个月游戏服务器费用多少&#xff1f;阿里云游戏服务器26元1个月、腾讯云游戏服务器32元&#xff0c;华为云26元&#x…

吸猫毛空气净化器哪个好?推荐除猫毛效果好宠物空气净化器品牌

当下有越来越多的家庭选择养宠物&#xff01;尽管家里变得更加温馨&#xff0c;但养宠可能会带来异味和空气中的毛发增多可能会带来健康问题&#xff0c;这是一个大问题&#xff01; 不想家里弥漫着异味&#xff0c;特别是来自宠物便便的味道&#xff0c;所以需要一款能够处理…

一张图读懂人工智能

一、生成人工智能的概念和应用&#xff0c;以及如何使用大型语言模型进行聊天和创造原创内容。这项技术将会对人类和企业产生深远影响。 计算机获得学习、思考和交流的能力&#xff0c;被称为生成人工智能。生成人工智能可以立即获得人类所有知识的总和&#xff0c;并回答任何…

pytest教程-13-conftest.py文件

上一小节我们学习了fixture的作用域&#xff0c;本小节我们学习一下pytest conftest.py文件的使用方法。 conftest.py文件的作用 conftest.py文件是pytest框架中的一个特殊文件&#xff0c;用于定义共享的设置、夹具(fixture)和钩子函数&#xff08;hook&#xff09;。 在py…

kali安装ARL灯塔(docker)

1、root身份进入容器 ┌──(root㉿Kali)-[~/桌面] └─# su root ┌──(root㉿Kali)-[~/桌面] └─# docker 2、先更新再克隆 ┌──(root㉿Kali)-[~/桌面] └─# apt-get update …

【STM32】江科大STM32学习笔记汇总(50)

00. 目录 文章目录 00. 目录01. STM32学习笔记汇总02. 相关资料下载03. 附录 01. STM32学习笔记汇总 【STM32】STM32学习笔记-课程简介(01) 【STM32】STM32学习笔记-STM32简介(02) 【STM32】STM32学习笔记-软件安装(03) 【STM32】STM32学习笔记-新建工程(04) 【STM32】STM…

React富文本编辑器开发(二)

我们接着上一节的示例内容&#xff0c;现在有如下需求&#xff0c;我们希望当我们按下某个按键时编辑器有所反应。这就需要我们对编辑器添加事件功能onKeyDown, 我们给 Editor添加事件&#xff1a; SDocor.jsx import { useState } from react; import { createEditor } from…

敏捷开发模型:一种灵活、协作和持续的软件开发方法

敏捷开发模型&#xff1a;一种灵活、协作和持续的软件开发方法 引言 在软件开发领域&#xff0c;随着市场需求的不断变化和技术的迅速发展&#xff0c;传统的瀑布模型逐渐暴露出其局限性。为了应对这些挑战&#xff0c;敏捷开发模型应运而生。敏捷开发模型强调灵活、协作和持…

软件无线电SDR加人工智能算法实现无人机频谱探测

通用软件无线电接收机作为传感器实时接收探测无线电信号&#xff0c;加上深度学习算法实现频谱识别&#xff0c;(https://img-blog.csdnimg.cn/5a6c4d89a047453a94f763f4e67aeb17.png)

Unity(第二十四部)UI

在游戏开发中&#xff0c;用户界面&#xff08;UI&#xff09;是至关重要的一部分。它负责与玩家进行交互&#xff0c;提供信息&#xff0c;并增强游戏的整体体验。Unity 提供了强大的工具和功能来创建和管理 UI。 ui的底层就是画布&#xff0c;创建画布的时候会同时创建一个事…

java中开源json处理库介绍

在Java生态系统中&#xff0c;有几个常用的开源库用于处理JSON数据。这些库各有特点&#xff0c;适用于不同的场景。下面我将介绍几个流行的Java JSON处理库&#xff0c;包括它们的基本情况、主要特点和核心API。 Jackson 基本情况 Jackson是一个流行的Java库&…