如何在Python中使用正则表达式?

在Python中使用正则表达式主要通过内置的re模块实现。正则表达式用于匹配、查找、替换字符串中的特定模式,是处理文本的强大工具。以下是使用正则表达式的核心方法和示例:

一、基本用法步骤

  1. 导入re模块import re
  2. 定义正则表达式模式:用字符串表示,特殊字符需转义(如\d表示数字)
  3. 使用re模块函数:如match()search()findall()等处理文本

二、常用函数及示例

1. re.match(pattern, string)
  • 从字符串开头匹配模式,成功返回匹配对象,否则返回None
import re# 匹配以"Hello"开头的字符串
result = re.match(r"Hello", "Hello World")
if result:print("匹配成功:", result.group())  # 输出: 匹配成功: Hello
else:print("匹配失败")
2. re.search(pattern, string)
  • 在整个字符串中查找第一个匹配项,不要求从开头开始
# 查找字符串中的数字
result = re.search(r"\d+", "年龄: 25, 身高: 180")
if result:print("找到数字:", result.group())  # 输出: 找到数字: 25
3. re.findall(pattern, string)
  • 查找字符串中所有匹配的子串,返回列表
# 提取所有邮箱地址
text = "联系我们: a@example.com, b@test.org"
emails = re.findall(r"\w+@\w+\.\w+", text)
print(emails)  # 输出: ['a@example.com', 'b@test.org']
4. re.sub(pattern, repl, string)
  • 替换字符串中所有匹配的子串,返回替换后的新字符串
# 将所有数字替换为"*"
text = "密码: 123456, 验证码: 789"
new_text = re.sub(r"\d+", "*", text)
print(new_text)  # 输出: 密码: *, 验证码: *
5. re.split(pattern, string)
  • 根据匹配的模式分割字符串,返回列表
# 用逗号或空格分割字符串
text = "apple, banana orange; grape"
parts = re.split(r"[,; ]+", text)  # 匹配逗号、分号或空格(可多个)
print(parts)  # 输出: ['apple', 'banana', 'orange', 'grape']

三、常用正则表达式符号

符号含义示例
.匹配任意字符(除换行)a.b 匹配 “aab”、“acb”
*前面元素出现0次或多次ab* 匹配 “a”、“ab”、“abb”
+前面元素出现1次或多次ab+ 匹配 “ab”、“abb”
?前面元素出现0次或1次ab? 匹配 “a”、“ab”
^匹配字符串开头^Hello 匹配以Hello开头
$匹配字符串结尾world$ 匹配以world结尾
[]字符集,匹配其中任意一个字符[abc] 匹配 “a”、“b”、“c”
\d匹配数字(等价于[0-9]\d{3} 匹配3位数字
\w匹配字母、数字、下划线\w+ 匹配单词
()分组,提取匹配的子串(\d+)-(\d+) 匹配"123-456"

四、进阶技巧:编译正则表达式

对于频繁使用的模式,可先用re.compile()编译,提高效率:

# 编译模式
pattern = re.compile(r"\d{3}-\d{4}")  # 匹配如"123-4567"的格式# 重复使用
text1 = "电话: 123-4567"
text2 = "传真: 890-1234"
print(pattern.search(text1).group())  # 123-4567
print(pattern.search(text2).group())  # 890-1234

五、实际案例:验证手机号

def is_valid_phone(phone):# 匹配中国大陆手机号(11位数字,以1开头)pattern = r"^1[3-9]\d{9}$"return bool(re.match(pattern, phone))print(is_valid_phone("13812345678"))  # True
print(is_valid_phone("1234567890"))   # False(长度不足)

通过re模块,你可以灵活处理各种文本提取、验证和替换需求,熟练掌握后能极大提升文本处理效率。

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

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

相关文章

用 Trae 玩转 Bright Data MCP 集成

引言 在自动化与智能体浪潮中,Trae 以“开箱即用、所见即所得”的工具编排体验,成为个人与团队落地 AI 工作流的高效选择。本篇将以 Trae 为主角,展示如何通过最少配置完成与 Bright Data MCP 的对接,并快速构建一个可用、可观测…

大数据Spark(六十三):RDD-Resilient Distributed Dataset

文章目录 RDD-Resilient Distributed Dataset 一、RDD五大特性 二、RDD创建方式 RDD-Resilient Distributed Dataset 在 Apache Spark 编程中,RDD(Resilient Distributed Dataset,弹性分布式数据集)是 Spark Core 中最基本的数…

java,通过SqlSessionFactory实现动态表明的插入和查询(适用于一个版本一个表的场景)

1,测试实体类package org.springblade.sample.test;import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data;/*** Author: 肖扬* CreateTime: 2025-09-05* Description: SqlSessionFactoryTest测试* Version: 1.0*/ Data TableName("session_factory_…

鹧鸪云光储流程系统全新升级:视频指引与分阶段模块使用指南

鹧鸪云光储流程系统近日完成重要更新,全面优化了操作指引体系,为用户带来更高效、直观的使用体验。本次升级重点推出了全套功能操作视频,并明确了不同业务阶段的核心模块使用指南,助力用户快速上手、提升工作效率。全覆盖视频操作…

ChatGPT 协作调优:把 SQL 查询从 5s 优化到 300ms 的全过程

ChatGPT 协作调优:把 SQL 查询从 5s 优化到 300ms 的全过程 🌟 Hello,我是摘星! 🌈 在彩虹般绚烂的技术栈中,我是那个永不停歇的色彩收集者。 🦋 每一个优化都是我培育的花朵,每一个…

复杂计算任务的智能轮询优化实战

目录 复杂计算任务的智能轮询优化实战 一、轮询方法介绍 二、三种轮询优化策略 1、用 setTimeout 替代 setInterval 2、轮询时间指数退避 3、标签页可见性检测(Page Visibility API) 三、封装一个简单易用的智能轮询方法 四、结语 作者&#xff…

Java开发中常用CollectionUtils方式,以及Spring中CollectionUtils常用方法示例

场景 Java开发中常用的CollectionUtils 一、Spring Framework的CollectionUtils 包路径&#xff1a;org.springframework.util.CollectionUtils 核心方法&#xff1a; isEmpty(Collection<?> coll) List<String> list null; boolean empty CollectionUtil…

人工智能学习:Transformer结构(文本嵌入及其位置编码器)

一、输入部分介绍 输入部分包含: 编码器源文本嵌入层及其位置编码器 解码器目标文本嵌入层及其位置编码器 在transformer的encoder和decoder的输入层中,使用了Positional Encoding,使得最终的输入满足: 这里,input_embedding是通过常规embedding层,将每一个词的…

⸢ 肆 ⸥ ⤳ 默认安全建设方案:c-1.增量风险管控

&#x1f44d;点「赞」&#x1f4cc;收「藏」&#x1f440;关「注」&#x1f4ac;评「论」 在金融科技深度融合的背景下&#xff0c;信息安全已从单纯的技术攻防扩展至架构、合规、流程与创新的系统工程。作为一名从业十多年的老兵&#xff0c;将系统阐述数字银行安全体系的建设…

第二课、熟悉Cocos Creator 编辑器界面

本文主要介绍Cocos Creator 编辑器界面中几个常规的面板功能&#xff0c;让新手了解编辑器界面中常规的面板功能&#xff0c;更好的使用Cocos Creator 编辑器。一、编辑器界面常规面板划分Cocos Creater编辑器默认样式如上&#xff0c;主要包含&#xff1a;1、工具栏&#xff0…

Elixir通过Onvif协议控制IP摄像机,扩展ExOnvif的摄像头连续移动功能 ContinuousMove

Elixir 通过Onvif 对IP设备进行控制时&#xff0c;可以使用 ExOnvif 库。ExOnvif官方文档 此文章仅提供了ContinuousMove的控制方式及示例。 Elixir Onvif协议控制IP设备的其他命令&#xff0c;可以参考以下链接 绝对移动 【AbsoluteMove】 调用指定预置位 【GotoPreset】 …

android studio JNI 环境配置实现 java 调用 c/c++

1、在 app 级的 build.gradle 文件配置两个地方 android{ defaultConfig{ // 在 defaultConfig 里配置下面代码 externalNativeBuild { cmake { cppFlags "-frtti -fexceptions"//添加对 c 的异常处理支持 …

静态时序分析详解之时序路径类型

目录 一、概览 二、时序路径 2.1 数据路径 2.2 时钟路径 2.3 时钟门控路径 2.4 异步路径 2.5 关键路径 2.6 False路径 2.7 单周期路径 2.8 多周期路径 2.9 最长路径和最短路径 三、参考资料 一、概览 ​ ​静态时序分析通过模拟最差条件下分析所有的时序路径&am…

SpringBoot埋点功能技术实现方案深度解析:架构设计、性能优化与扩展性实践

SpringBoot埋点功能技术实现方案深度解析&#xff1a;架构设计、性能优化与扩展性实践 1. 原理剖析与技术实现细节 1.1 埋点技术基本原理 埋点&#xff08;Tracking&#xff09;是通过在代码中植入特定逻辑&#xff0c;收集用户行为数据、系统运行状态和业务指标的技术手段。在…

自建prometheus监控腾讯云k8s集群

自建prometheus监控腾讯云k8s集群 使用场景 k8s集群&#xff08;腾讯云容器服务&#xff09; promtheus (外部自建服务) 腾讯云提供了容器内部自建 Prometheus 监控 TKE 集群的文档&#xff0c;参考。 当前的环境promethues建在k8S外的云服务器上&#xff0c;与上面链接文…

2025高教社国赛数学建模C题参考论文(含模型和代码)

2025 年高教社杯大学生数学建模竞赛 C 题参考论文 目录 NIPT 的时点选择与胎儿的异常判定 摘要 1 问题重述 2 问题分析 2.1 问题 1 分析 2.2 问题 2 分析 2.3 问题 3 分析 2.4 问题 4 分析 3 模型假设与符号定义 3.1 模型假设 4. 孕周在 10-25 周内检测有…

iOS开发环境搭建及打包流程

一、下载xcode 直接去苹果商店的appstore下载就行 二、clone项目 1.登录xcode苹果账号或对应代码仓库账号 2.clone项目 3.安装设备真机环境&#xff08;未安装过的话&#xff09; 三.安装cocoapods 1. 检查并更新 Ruby 环境 CocoaPods 是基于 Ruby 编写的&#xff0c;因此…

数据结构之链表(单向链表与双向链表)

一&#xff0c;链表描述链表是一种常见的重要的数据结构,是动态地进行存储分配的一种结构。常用于需存储的数据的数目无法事先确定。1.链表的一般结构链表的组成&#xff1a; 头指针&#xff1a;存放一个地址&#xff0c;该地址指向一个元素 结点&#xff1a;用户需要的实际数据…

从反向代理到负载均衡:Nginx + Tomcat 构建高可用Web服务架构

从反向代理到负载均衡&#xff1a;Nginx Tomcat 构建高可用Web服务架构 文章目录从反向代理到负载均衡&#xff1a;Nginx Tomcat 构建高可用Web服务架构一、基础铺垫&#xff1a;什么是反向代理&#xff1f;1.1 反向代理的核心原理1.2 Nginx反向代理实战配置步骤1&#xff1a…

Simulink中使用Test sequence单元测试

一、Tips 在对simulink模型进行Test sequence单元测试时&#xff0c;如果采取书写测试用例的话&#xff0c;有以下操作。 1、使用”fprintf(‘time%f\n’, t);“来打印当前step的时间&#xff1b; 二、数据类型转换 1、double类型 -> boolean类型 clc; clear all;% 1、doubl…