python基础之正则表达式

Python中的正则表达式(regular expressions,简称regex)是强大的字符串处理工具,用于搜索、匹配和替换字符串中的特定模式。Python通过 re 模块提供对正则表达式的支持。以下是对Python正则表达式的详细讲解。

基本概念和语法

导入模块
import re
基本函数
  • re.match(pattern, string): 从字符串的起始位置匹配模式。
  • re.search(pattern, string): 搜索整个字符串,返回第一个匹配的对象。
  • re.findall(pattern, string): 返回字符串中所有非重叠匹配的列表。
  • re.finditer(pattern, string): 返回字符串中所有非重叠匹配的迭代器。
  • re.sub(pattern, repl, string): 替换字符串中所有匹配的子串。
编译模式

可以通过 re.compile() 预编译正则表达式模式,提高匹配效率:

pattern = re.compile(r'\d+')
result = pattern.findall('123 abc 456')
print(result)  # ['123', '456']

常用正则表达式符号

字符匹配
  • .: 匹配除换行符以外的任意字符。
  • \d: 匹配任意数字,相当于 [0-9]
  • \D: 匹配任意非数字字符。
  • \w: 匹配字母、数字和下划线,相当于 [a-zA-Z0-9_]
  • \W: 匹配任意非字母、数字和下划线的字符。
  • \s: 匹配空白字符(包括空格、制表符、换页符等)。
  • \S: 匹配非空白字符。
边界匹配
  • ^: 匹配字符串的开头。
  • $: 匹配字符串的结尾。
  • \b: 匹配单词边界。
  • \B: 匹配非单词边界。
量词
  • *: 匹配前面的字符0次或多次。
  • +: 匹配前面的字符1次或多次。
  • ?: 匹配前面的字符0次或1次。
  • {n}: 匹配前面的字符恰好n次。
  • {n,}: 匹配前面的字符至少n次。
  • {n,m}: 匹配前面的字符至少n次,至多m次。
分组
  • (...): 匹配括号内的正则表达式,并形成一个组。
  • (?:...): 匹配括号内的正则表达式,但不形成组。
特殊转义字符
  • \\: 反斜杠,用于转义特殊字符。
  • \n: 匹配换行符。
  • \t: 匹配制表符。

示例

匹配手机号
import repattern = re.compile(r'1[3-9]\d{9}')
text = '我的手机号是13812345678,请联系我。'
match = pattern.search(text)
if match:print(match.group())  # 输出:13812345678
提取电子邮件地址
import repattern = re.compile(r'[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+')
text = '请发送邮件到 example.email@example.com 联系我们。'
emails = pattern.findall(text)
print(emails)  # 输出:['example.email@example.com']
替换文本中的URL
import repattern = re.compile(r'https?://[^\s]+')
text = '访问我们的官网 http://example.com 或 https://example.org 获取更多信息。'
new_text = pattern.sub('URL', text)
print(new_text)  # 输出:访问我们的官网 URL 或 URL 获取更多信息。

正则表达式标志

常用标志
  • re.IGNORECASEre.I: 忽略大小写。
  • re.MULTILINEre.M: 多行模式,^$ 匹配每一行的开头和结尾。
  • re.DOTALLre.S: 点号匹配包括换行符在内的任意字符。
  • re.VERBOSEre.X: 允许在正则表达式中使用空白符和注释,以增加可读性。

示例:

import repattern = re.compile(r"""\d+     # 匹配一个或多个数字\s      # 匹配一个空白符\w+     # 匹配一个或多个字母或数字
""", re.VERBOSE)
text = '123 abc'
match = pattern.search(text)
if match:print(match.group())  # 输出:123 abc

以上是Python正则表达式的详细讲解。正则表达式在文本处理、数据清洗和数据验证等方面非常有用。通过练习和熟悉各种模式和标志,可以大大提高处理字符串的效率和能力。

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

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

相关文章

MSPM0G3507——QEI

在支持QEI的TIMGx实例中,正交编码器接口(QEI)模式提供了一个到正交编码器输出的接口。它对正交编码数据进行解码,以提供关于线性或旋转运动的相对定位和移动的信息。 QEI由两个格雷编码的正交输入信号PHA和PHB以及索引输入信号IDX…

Postman接口测试工具的原理及应用详解(三)

本系列文章简介: 在当今软件开发的世界中,接口测试作为保证软件质量的重要一环,其重要性不言而喻。随着前后端分离开发模式的普及,接口测试已成为连接前后端开发的桥梁,确保前后端之间的数据交互准确无误。在这样的背景下,Postman作为一款功能强大、易于使用的接口测试工…

使用session.setAttribute存储会话属性

使用session.setAttribute存储会话属性 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在本文中,我们将深入探讨如何在Java Web应用中使用session.s…

flask的基本使用2

上一篇我们介绍了基本使用方法 flask使用 【 1 】基本使用 from flask import Flask# 1 实例化得到对象 app Flask(__name__)# 2 注册路由--》写视图函数 app.route(/) def index():# 3 返回给前端字符串return hello worldif __name__ __main__:# 运行app,默认…

idea的代码提示插件使用记录

安装ai插件卸载之后,偶尔还是idea一直占用100%,将idea缓存全清理了,重新生成之后就正常了 idea官方插件 下面几个感觉…基本没有感觉 按行提示的偶尔有提示,(cpu占用不小,提示不强) 缺点&am…

Sentinel解决雪崩问题

我们或多或少都对雪崩问题有点了解,在微服务系统中,各个微服务互相调用,关系错综复杂,如果其中一个微服务挂了或者处理消息的速度大幅下降,需要被处理的消息越积越多,那么影响的不仅仅是本微服务的功能&…

C++ | Leetcode C++题解之第199题二叉树的右视图

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> rightSideView(TreeNode* root) {unordered_map<int, int> rightmostValueAtDepth;int max_depth -1;stack<TreeNode*> nodeStack;stack<int> depthStack;nodeStack.push(ro…

SCI二区|北极海鹦优化算法(APO)原理及实现【免费获取Matlab代码】

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;W Wang受到北极海鹦的生存和捕食行为启发&#xff0c;提出了北极海鹦优化算法&#xff08;Arctic Puffin Optimization, APO&#xff09;。 2.算法原理 2.1算法思想 …

Tcmalloc工具定位内存泄漏问题

内存泄漏问题定位 gperftools工具安装 执行如下操作&#xff1a; git clone https://github.com/gperftools/gperftools.git 注&#xff1a;如果网速较慢&#xff0c;可直接去下载压缩包。 如我下载的地址&#xff1a;https://github.com/gperftools/gperftools/releases/ta…

深入探索Python自动化测试:Pytest与Unittest框架详解

摘要&#xff1a; 在软件开发过程中&#xff0c;自动化测试是确保代码质量和提高开发效率的关键环节。Python作为一门广泛使用的编程语言&#xff0c;提供了多种自动化测试工具。本文详细介绍了Python中两个主流的测试框架&#xff1a;Pytest和Unittest。文章首先概述了Pytest的…

JAVA高级进阶14设计模板

第十四天、设计模板 什么是设计模板&#xff08;Design pattern&#xff09; ? 一个问题通常有n种解法&#xff0c;其中肯定有一种解法是最优的&#xff0c;这个最优的解法被人总结出来了&#xff0c;称之为设计模式 设计模式有20多种&#xff0c;对应20多种软件开发中会遇到…

SA 注册流程

目录 1. UE开机后按照3GPP TS 38.104定义的Synchronization Raster搜索特定频点 2.UE尝试检测PSS/SSS&#xff0c;取得下行时钟同步&#xff0c;并获取小区的PCI&#xff1b;如果失败则转步骤1搜索下一个频点&#xff1b;否则继续后续步骤&#xff1b; 3.解析Mib&#xff0c;…

WDG看门狗

1 WDG 1.1 简介 WDG是看门狗定时器&#xff08;Watchdog Timer&#xff09;的缩写&#xff0c;它是一种用于计算机和嵌入式系统中的定时器&#xff0c;用来检测和恢复系统故障。 看门狗就像是一个忠诚的宠物狗&#xff0c;它时刻盯着你的程序&#xff0c;确保它们正常运行。…

SpringBoot启动出错:无法访问org.springframework.boot.autoconfigure.SpringBootApplication

无法访问org.springframework.boot.autoconfigure.SpringBootApplication类文件具有错误的版本 61.0&#xff0c;应为 52.0请删除该文件或确保该文件位于正确的类路径子目录中。 出现该问题是由于版本不兼容&#xff0c; 在pom.xml文件中&#xff0c;修改版本为2开头即可

一个用于Win的自动复制文本的工具:Auto_Copy

自动复制工具 这是一个用在 Windows 上的的小工具,会将你选中的任何文本保存下来,可以通过点击右键粘贴选中内容。 一、灵感来源: 在使用Mobaxterm时,我注意到其软件中具备选中即自动复制和右键直接粘贴的功能。但是,这种选中自动复制的功能仅在软件内部有效。由于这一功…

【wsl2】工作在nat模式安装miniconda

刚好当前是root 用户这里wsl说自己nat模式,不用系统代理 wsl: A localhost proxy configuration was detected but not mirrored into WSL. WSL in NAT mode does not support localhost proxies. Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.153.1-microsoft-standard-W…

数字图像处理之【高斯金字塔】与【拉普拉斯金字塔】

数字图像处理之【高斯金字塔】与【拉普拉斯金字塔】 1.1 什么是高斯金字塔&#xff1f; 高斯金字塔&#xff08;Gaussian Pyramid&#xff09;是一种多分辨率图像表示方法&#xff0c;用于图像处理和计算机视觉领域。它通过对原始图像进行一系列的高斯平滑和下采样操作&#x…

最新docker仓库镜像

目前下面的docker仓库镜像源还能使用。 vi /etc/docker/daemon.json添加如下配置{"registry-mirrors": ["https://hub.uuuadc.top", "https://docker.anyhub.us.kg", "https://dockerhub.jobcher.com", "https://dockerhub.icu&…

RTMP推流到SRS流媒体服务器消息处理

RTMP推流到SRS流媒体服务器消息处理 SRS和客户端是怎么交换消息的&#xff1f;各个消息有什么作用&#xff1f;握手成功后&#xff0c;SRS和客户端进行消息交换&#xff0c;对应wiresharek这部分截图&#xff1a; 流程图&#xff08;之前画的&#xff0c;可能不够详细&#xf…

IPC进程通信:QNX

引言 在现代操作系统中&#xff0c;进程间通信&#xff08;IPC&#xff09;机制是实现进程间数据交换和同步的关键技术。IPC允许多个进程共享信息和资源&#xff0c;从而协同工作完成复杂任务。在QNX Neutrino系统中&#xff0c;IPC尤为重要&#xff0c;因为QNX主要面向实时系…