从基础知识到应用实例,一站式掌握 Python 正则表达式

前言

大家好,我是阔升。今天,我要和大家聊聊 Python 中的正则表达式。正则表达式可谓是编程界的“瑞士军刀”,能用来处理各种复杂的字符串操作。本文将通过几个有趣的例子,带你学习正则表达式。

正则表达式基础

在 Python 中,我们主要使用 re 模块来处理正则表达式。首先,我们先来了解几个基本概念和常用操作。

导入 re 模块

import re

匹配模式

  • . 匹配任意一个字符(除了换行符)
  • ^ 匹配字符串的开始
  • $ 匹配字符串的结尾
  • * 匹配前面的字符零次或多次
  • + 匹配前面的字符一次或多次
  • ? 匹配前面的字符零次或一次
  • {n} 匹配前面的字符恰好 n 次
  • {n,} 匹配前面的字符至少 n 次
  • {n,m} 匹配前面的字符至少 n 次,至多 m 次

正则表达式实例讲解

1. 匹配邮箱地址

正则表达式可以用来匹配邮箱地址。一个简单的邮箱地址匹配模式如下:

import re# 匹配邮箱地址的正则表达式
pattern = r'[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+'
email = "example@example.com"# 使用 re.match() 匹配邮箱地址
match = re.match(pattern, email)
if match:print("邮箱格式正确")
else:print("邮箱格式不正确")

运行结果

邮箱格式正确

2. 提取电话号码

假设我们要从一段文本中提取出所有的电话号码:

import re# 示例文本
text = "联系人:小明,电话:010-12345678;联系人:小红,电话:020-87654321。"# 匹配电话号码的正则表达式
pattern = r'\d{3}-\d{8}|\d{4}-\d{7}'# 使用 re.findall() 提取电话号码
phones = re.findall(pattern, text)
print("找到的电话号码:", phones)

运行结果

找到的电话号码: ['010-12345678', '020-87654321']

3. 替换文本中的敏感词

有时候我们需要将文本中的敏感词替换为其他字符:

import re# 示例文本
text = "这里有一些敏感词,比如赌博,毒品。"# 匹配敏感词的正则表达式
pattern = r'赌博|毒品'# 使用 re.sub() 替换敏感词
replaced_text = re.sub(pattern, '**', text)
print("替换后的文本:", replaced_text)

运行结果

替换后的文本: 这里有一些敏感词,比如**,**。

常用正则表达式函数

re.match()

re.match 用于从字符串的起始位置匹配一个模式:

import re# 示例模式和字符串
pattern = r'\d+'
string = "123abc"# 使用 re.match() 从起始位置匹配
result = re.match(pattern, string)
if result:print("匹配成功:", result.group())
else:print("匹配失败")

运行结果

匹配成功: 123

re.search()

re.search 用于扫描整个字符串并返回第一个成功的匹配:

import re# 示例模式和字符串
pattern = r'\d+'
string = "abc123def"# 使用 re.search() 扫描整个字符串
result = re.search(pattern, string)
if result:print("匹配成功:", result.group())
else:print("匹配失败")

运行结果

匹配成功: 123

re.findall()

re.findall 返回字符串中所有非重叠的匹配模式:

import re# 示例模式和字符串
pattern = r'\d+'
string = "abc123def456ghi789"# 使用 re.findall() 找到所有匹配
results = re.findall(pattern, string)
print("所有匹配项:", results)

运行结果

所有匹配项: ['123', '456', '789']

re.sub()

re.sub 用于替换字符串中匹配的模式:

import re# 示例文本
text = "今天的温度是30度,明天的温度是28度。"# 匹配数字的正则表达式
pattern = r'\d+'# 使用 re.sub() 替换数字
replaced_text = re.sub(pattern, 'XX', text)
print("替换后的文本:", replaced_text)

运行结果

替换后的文本: 今天的温度是XX度,明天的温度是XX度。

结语

正则表达式在 Python 中是一个非常强大的工具,掌握它能够大大提高我们处理字符串的效率。希望通过本文的讲解,大家能对正则表达式有一个更全面的理解。如果你有任何问题或建议,欢迎在评论区留言,我们下期再见!


记得给这篇文章点个赞,分享给更多的朋友哦!你的支持是我创作的最大动力!

Happy coding! 😄

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

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

相关文章

JMeter接口测试之文件上传(参数提取与传递)

参考文档: Jmeter接口测试-文件上传(全网最详细的教程)_jmeter 文件上传-CSDN博客 1、首先通过fiddler抓取文件上传接口,在Raw的tab页中查看默认请求头以及请求参数 如图所示 2、在jmeter中导入抓取的接口,首先需要配…

新书速览|深入理解Hive:从基础到高阶:视频教学版

《深入理解Hive:从基础到高阶:视频教学版》 本书内容 《深入理解Hive:从基础到高阶:视频教学版》采用“理论实战”的形式编写,通过大量的实例,结合作者多年一线开发实战经验,全面地介绍Hive的使用方法。《深入理解Hiv…

AI算法18-最小角回归算法Least Angle Regression | LARS

​​​ 最小角回归算法简介 最小角回归(Least Angle Regression, LAR)是一种用于回归分析的统计方法,它在某些方面类似于最小二乘回归,但提供了一些额外的优点。最小角回归由Bradley Efron等人提出,主要用于处理具有…

【Linux】安装PHP扩展-redis

说明 本文档是在centos7.6的环境下,安装PHP7.4之后,安装对应的PHP扩展包redis。 一、下载redis扩展 pecl官方地址:PECL :: The PHP Extension Community Library 下载的版本是:redis-5.3.7.tgz 二、安装redis扩展 1.上传 redis 压缩包到…

基于STM32设计的物联网智能鱼缸(微信小程序)(187)

基于STM32设计的物联网智能鱼缸(微信小程序)(187) 文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】设计需求总结【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】ESP8266工作模式配置1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献1.4 开发工具的…

Amazon Bedrock 常用场景及 Python 实现

Amazon Bedrock 是 AWS 提供的一项全托管服务,它为开发者提供了一系列高性能的基础模型(Foundation Models,FMs)。通过单一 API,开发者可以访问来自 AI21 Labs、Anthropic、Cohere、Meta、Stability AI 和 Amazon 等领先 AI 公司的模型。本文将介绍 Amazon Bedrock 的几个…

深入异步JavaScript:掌握Promises与async/await

引言 异步编程允许JavaScript代码在等待某些耗时操作(如网络请求、文件读写等)完成时,继续执行其他任务,而不是阻塞整个程序的运行。这种编程模式极大地提高了应用的响应速度和效率。 JavaScript中的异步编程基础 同步与异步代…

【嵌入式DIY实例-ESP8266篇】-LCD ST7789显示DS1307 RTC时间数据

LCD ST7789显示DS1307 RTC时间数据 文章目录 LCD ST7789显示DS1307 RTC时间数据1、硬件准备与接线2、代码实现本文将介绍如何使用 ESP8266 NodeMCU 板和 DS1307 RTC 集成电路构建简单的实时时钟和日历 (RTCC),其中时间和日期打印在 ST7789 TFT 显示模块上。 ST7789 TFT 模块包…

MySQL面试题-重难点

mysql中有哪些锁?举出所有例子,各个锁的作用是什么?区别是什么? 共享锁:也叫读锁,简称S锁,在事务要读取一条记录时,先获取该记录的S锁,别的事务也可以继续获取该记录的S…

[Linux CMD] 文件编辑 nano (待更新)

【Linux】:文本编辑与输出命令 轻松上手nano、echo和cat_linux终端内容输出文本-CSDN博客

【海外云手机】静态住宅IP集成解决方案

航海大背景下,企业和个人用户对于网络隐私、稳定性以及跨国业务的需求日益增加。静态住宅IP与海外云手机的结合,提供了一种创新的集成解决方案,能够有效应对这些需求。 本篇文章分为三个部分;静态住宅优势、云手机优势、集成解决…

OpenCV一个简单的摄像头调用与关闭

在使用OpenCV(Open Source Computer Vision Library)进行摄像头调用与关闭时,通常使用cv2.VideoCapture()函数来调用摄像头,并通过适当的方式关闭它。 调用摄像头 首先,需要导入OpenCV库(通常简写为cv2&a…

gemini-pro-vision 看图说话

一、安装 pip install -U langchain-google-vertexai 二、设置访问权限 申请服务账号json格式key 三、完整代码 import gradio as gr import json import base64 from pathlib import Path import os import time import requests from fastapi import FastAPI, UploadFile,…

android的跨进程通讯方式

android的跨进程通讯方式 在Android中,跨进程通信(IPC)可以通过多种方式实现,以下是几种常见的方法: 使用Intent:通过Intent传递数据,启动另一个应用的Activity或Service。 使用AIDL&#…

无缝集成的艺术:在Conda中启用pip与Conda的互操作性

无缝集成的艺术:在Conda中启用pip与Conda的互操作性 引言 Conda是一个强大的包管理器和环境管理器,广泛用于Python和其他科学计算语言。它不仅能够管理包的依赖关系,还能创建和维护独立的开发环境。然而,在某些情况下&#xff0…

K8S私有云裸金属服务器负载均衡器OpenELB——筑梦之路

OpenELB介绍 OpenELB 是一个专为裸机 Kubernetes 集群设计的开源负载均衡器实现。 在云服务环境中的 Kubernetes 集群里,通常可以用云服务提供商提供的负载均衡服务来暴露 Service,但是在本地没办法这样操作。而 OpenELB 可以让用户在裸金属服务器、边缘…

RocketMQ~架构与工作流程了解

简介 RocketMQ 具有高性能、高可靠、高实时、分布式 的特点。它是一个采用 Java 语言开发的分布式的消息系统,由阿里巴巴团队开发,在 2016 年底贡献给 Apache,成为了 Apache 的一个顶级项目。 在阿里内部,RocketMQ 很好地服务了集…

怎么关闭Windows安全中心?

Windows安全中心是Windows操作系统中的一项重要功能,系统提供这个功能的目的是保护电脑免受各种安全威胁。尽管如此,有时候我们可能出于某些原因需要关闭它。本文将详细介绍如何关闭Windows安全中心,以及需要注意的事项。 重要提醒&#xff1…

搞清c++中的队列(queue)以及双端队列(deque),以及常用的接口!

1. 队列 概念:Queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口 特征: 队列容器允许从一端新增元素,从另一端移除元素 队列中只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为 队列…

这个工具居然能让你的微信暴露得一览无余!!

今天在github看到一个不错的项目,叫做wx-dump-4j,不看不知道,一看吓一跳,这个工具完全的解析了我的微信!这个工具准确显示好友数、群聊数和当日消息总量,并且!!这个工具提供过去15天…