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

news/2024/8/26 20:58:38 标签: python, 正则表达式, 开发语言

前言

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

正则表达式基础

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

导入 re 模块

python">import re

匹配模式

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

正则表达式实例讲解

1. 匹配邮箱地址

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

python">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. 提取电话号码

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

python">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. 替换文本中的敏感词

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

python">import re

# 示例文本
text = "这里有一些敏感词,比如赌博,毒品。"

# 匹配敏感词的正则表达式
pattern = r'赌博|毒品'

# 使用 re.sub() 替换敏感词
replaced_text = re.sub(pattern, '**', text)
print("替换后的文本:", replaced_text)

运行结果

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

常用正则表达式函数

re.match()

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

python">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 用于扫描整个字符串并返回第一个成功的匹配:

python">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 返回字符串中所有非重叠的匹配模式:

python">import re

# 示例模式和字符串
pattern = r'\d+'
string = "abc123def456ghi789"

# 使用 re.findall() 找到所有匹配
results = re.findall(pattern, string)
print("所有匹配项:", results)

运行结果

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

re.sub()

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

python">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.niftyadmin.cn/n/5558448.html

相关文章

风景区服务热线系统:智能化时代的旅游新选择

一、引言 1 、风景区服务热线系统的概念 风景区服务热线系统是指为游客提供实时旅游信息咨询、投诉处理、紧急救援等一系列服务的电话和网络平台。它不仅是景区与游客之间的重要沟通桥梁,也是提升游客满意度、优化景区管理的重要手段。 2 、智能化时代对旅游服务…

【入门级】docker

开头处生动的描述一下”码头工人”吧:小鲸鱼(登记处Registry:比如docker hub官方)背着好多集装箱(仓库repository:存放各种各样的镜像,一般存放的是一类镜像,这一类镜像中通过tag 版…

迷宫求解问题--C++

问题描述:有一张地图,0表示没有障碍物,1表示有障碍物,给你一幅地图、一个起始位置和一个目标位置,请判断是否能够从起始位置出发到达目标位置,可以的话将走过的路径用6进行标记 解题思路: 将起…

Word参考文献交叉引用

前言 Word自带交叉引用功能,可在正文位置引用文档内自动编号的段落,同时创建超链接,适用于参考文献的引用。使用此方法对参考文献进行引用后,当参考文献的编号发生变化时,只需要更新域即可与正文中的引用相对应。下文…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【23】【订单服务】

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【23】【订单服务】 订单中心订单信息用户信息订单基础信息商品信息优惠信息支付信息物流信息 订单状态订单流程订单创建与支付逆向流程 订单确认页Feign远程调用丢失请求头问题Feign异步…

解析CSS与JavaScript的使用方法及ECMAScript语法规则

一、CSS的三种使用方式 CSS&#xff08;层叠样式表&#xff09;用于定义网页的样式和布局。以下是CSS的三种使用方式&#xff1a; 1. 内联样式 内联样式是最直接的应用方式&#xff0c;它通过HTML标签的style属性来定义。 代码示例&#xff1a; <h1 style"color: …

HTTP缓存/强缓存/协商缓存

HTTP缓存是HTTP性能优化中一种简单高效的优化方式&#xff0c;通过保存资源副本并在下次请求时直接使用该副本&#xff0c;以减少对服务器的请求次数和数据传输量&#xff0c;从而提高网页加载速度和用户体验。以下是HTTP缓存的详细解释&#xff1a; 一、定义与工作原理 HTTP…

项目JetCache的常见配置与使用

Hello, 大家好&#xff0c;今天本汪给大家带来的是JetCache在项目中的常见配置与用法讲解&#xff0c;接下来&#xff0c;随本汪一起来看看吧 一、介绍 官网地址&#xff1a;https://github.com/alibaba/jetcache JetCache 是一种 Java 缓存抽象&#xff0c;它为不同的缓存…