Python基础:正则表达式(regular expression)详解

在Python中,正则表达式是一种强大的工具,可用于匹配和操作字符串。什么是正则表达式? 正则表达式是一种模式匹配语言,用于匹配字符串中的特定模式。这些模式可以是字母、数字、字符组合或其他符号。正则表达式通常用于文本处理、网络编程、数据分析等领域。
在 Python 中,正则表达式的实现主要基于 re 模块,该模块提供了一组函数和类,用于处理正则表达式的匹配、搜索和替换。
1. 实现原理:
正则表达式引擎: Python 中的正则表达式引擎使用了正则表达式的编译和匹配两个主要阶段。
编译阶段: 在编译阶段,正则表达式字符串会被解析并转换成一个内部的模式表示。这个模式表示了匹配规则,它包括普通字符、元字符、字符类、分组等。
匹配阶段: 一旦正则表达式被编译,就可以用来匹配字符串。匹配过程是基于模式在字符串中的搜索和比对。引擎会从字符串的起始位置开始,尝试找到与模式匹配的子字符串。
回溯和优化: 在匹配过程中,可能会涉及到回溯的操作,即引擎试图在字符串中不同位置匹配模式。为了提高性能,引擎会使用一些优化策略,避免不必要的回溯。
2. 正则表达式
正则表达式由普通字符和元字符组成。普通字符就是字母、数字、空格等常见字符;元字符则表示特殊含义,例如点号(.)表示任意字符,星号(*)表示零个或多个前面的字符。
常用的元字符及其含义:
.:匹配任意单个字符
\d:匹配数字(等价于 [0-9])
\w:匹配字母、数字、下划线(等价于 [a-zA-Z0-9_])
\s:匹配空格、制表符、换行符等空白字符
^:匹配开头
$:匹配结尾
*:匹配前面的字符零次或多次
+:匹配前面的字符一次或多次
?:匹配前面的字符零次或一次
[]:匹配方括号中任意一个字符
():将其中的内容作为一个组
3.常见示例:
3.1 匹配手机号码
import repattern = r"\d{11}"
string = "My phone number is 12345678901"
match_result = re.search(pattern, string)if match_result:print("Match found:", match_result.group())
else:print("Match not found")
3.2 匹配邮政编码
import repattern = r"\b\d{6}\b"
string = "The postal code is 123456"
match_result = re.search(pattern, string)if match_result:print("Match found:", match_result.group())
else:print("Match not found")
3.3 提取HTML标签中的内容
import repattern = r"<.*?>"
html_string = "<p>This is a <b>bold</b> statement.</p>"
match_result = re.findall(pattern, html_string)print("Matches found:", match_result)
3.4 提取HTML中的链接(href属性)
import repattern = r'href="(.*?)"'
html_code = '<a href="https://www.example.com">Visit our website</a>'
match_result = re.search(pattern, html_code)if match_result:print("Match found:", match_result.group(1))
else:print("Match not found")
3.5 匹配IP地址
import repattern = r"\b(?:\d{1,3}\.){3}\d{1,3}\b"
string = "Server's IP address is 192.168.1.1"
match_result = re.search(pattern, string)if match_result:print("Match found:", match_result.group())
else:print("Match not found")
3.6 匹配URL
import repattern = r"https?://\S+"
text = "Visit our website at https://www.example.com"
match_result = re.search(pattern, text)if match_result:print("Match found:", match_result.group())
else:print("Match not found")
3.7 匹配日期(yyyy-mm-dd)
import repattern = r"\b\d{4}-\d{2}-\d{2}\b"
text = "Event date: 2022-12-31"
match_result = re.search(pattern, text)if match_result:print("Match found:", match_result.group())
else:print("Match not found")
3.8 匹配邮箱地址
import repattern = r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b"
text = "Contact us at info@example.com or support@company.net"
match_result = re.findall(pattern, text)print("Matches found:", match_result)
3.9 匹配全名中的姓氏
import repattern = r"\b[A-Z][a-z]+\b"
full_name = "John Doe"
match_result = re.findall(pattern, full_name)print("Matches found:", match_result)
3.10 匹配中文名字
import repattern = r'^[\u4e00-\u9fa5]{1,5}$'
name = "王小明"match_result = re.match(pattern, name)if match_result:print("Match found:", match_result.group())
else:print("Match not found")
3.11 匹配字符串中的所有单词
import repattern = r"\b\w+\b"
text = "This is a simple example."
match_result = re.findall(pattern, text)print("Matches found:", match_result)

相关文章:
Python基础:正则表达式(regular expression)详解
在Python中,正则表达式是一种强大的工具,可用于匹配和操作字符串。什么是正则表达式? 正则表达式是一种模式匹配语言,用于匹配字符串中的特定模式。这些模式可以是字母、数字、字符组合或其他符号。正则表达式通常用于文本处理、网…...
sqlmap requires ‘python-pymysql‘ third-party library
使用sqlmap进行udf提权报错: [14:06:04] [CRITICAL] sqlmap requires python-pymysql third-party library in order to directly connect to the DBMS MySQL. You can download it from https://github.com/PyMySQL/PyMySQL. Alternative is to use a package pyt…...
05 robotFrameWork+selenium2library 一维数组的使用
一、原生数组: 1、Excel中: LIST_OneRange 项目1|项目2 2、生成的PY: LIST_OneRange [u项目1,u项目2] 3、脚本使用: :FOR ${Local_I} IN RANGE len(${OneRange}) ${value} Evaluate ${OneRange}[${Local_I}] …...
SpringCloud Alibaba组件入门全方面汇总(上):注册中心-nacos、负载均衡-ribbon、远程调用-feign
文章目录 NacosRibbonFeignFeign拓展 Nacos 概念:Nacos是阿里巴巴推出的一款新开源项目,它是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos致力于帮助用户发现、配置和管理微服务,它提供了一组简单易用的特性集&am…...
Zabbix钉钉机器人告警
目录 一.在钉钉群里添加机器人 二.配置钉钉告警脚本 1.安装python依赖模块python-requests 2.配置钉钉告警配置脚本zabbix_ding.conf 3.创建告警日志并且授权。 4.配置钉钉告警执行脚本dingding.py 5.测试 三.配置zabbix告警 1.创建媒介 2.给用户添加报警媒介 3.配置…...
unity shaderGraph实例-扫描效果
文章目录 效果展示整体结构各区域内容区域1区域2区域3区域4区域5区域6GraphSetttings注意事项使用方法 效果展示 整体结构 各区域内容 区域1 用场景深度减去顶点的View空间的视野深度(Z值),这里Z值需要乘-1是因为从相机看到的物体顶点的视野…...
AW2013芯片讲解
文章目录 前言一、AW2013芯片介绍二、AW2013从机地址三、AW2013读写时序AW2013写时序AW2013读时序 四、AW2013的INT引脚五、LED作用和配置描述LED控制PWM控制模式简短编程模式 六、AW2013寄存器讲解总结 前言 本篇文章将带大家学习AW2013芯片的使用。 一、AW2013芯片介绍 AW…...
Spring JdbcTemplate Junit 测试 - ResultSetExtractor/RowMapper
Spring JdbcTemplate Junit 测试覆盖率 - 以 ResultSetExtractor / RowMapper 为例 1、RowMapper Mockito 测试 (1)创建实体类 User Data public class User {private Integer id;private String name;private String applicant;private String addre…...
RabbitMQ实战
文章目录 1、简介2、MQ优点缺点MQ的应用场景AMQP工作原理市面上常见的MQ 3、Linux安装RabbitMQ3.1 版本对应3.2 安装socat3.3 下载 Erlang/OTP、安装、验证 erlang方法一:1. 下载2. 将下载的Erlang服务上传到服务器上面3. 解压4. 编译erlang的依赖环境5. 安装Erlang…...
UI游戏设计模板大放送:7种别具匠心的创意!
随着游戏产业的快速发展,UI游戏设计已经成为一个热门的设计行业,但与之前的设计相比,UI游戏设计还是比较特殊的,主要体现在UI游戏设计难度大,需要大量的手绘内容和对游戏玩法的理解上。这些门槛需要大量的时间去学习&a…...
酷开系统 酷开科技,将家庭娱乐推向新高潮
在当今数字化时代,家庭娱乐已经成为人们日常生活中不可或缺的一部分。如果你厌倦了传统的家庭娱乐方式,想要一种全新的、充满惊喜的娱乐体验,那么,不妨进入到酷开科技的世界,作为智能电视行业领军企业,酷开…...
我精心制作的 python 一小时极简课程来了 ≧◠◡◠≦ 免安装程序+精简核心概念
我精心制作的 python 一小时极简课程来了 ≧◠◡◠≦ 免安装程序+精简核心概念 用过我的软件的朋友应该知道,目前我发布的所有的软件都是 python 写的,例如: 发票批量识别软件点云格式转换软件亲人微信消息记录提取软件批量 WORD-MD 文档中英翻译软件批量 TXT 文本转音频软件…...
220V交流转直流的简易电源设计
220V交流转直流的简易电源设计 设计简介设计原理电路图变压器电路交流转直流电路3.3V电源接口电路 PCB3D图 实践检验 设计简介 通过模拟电路的相关知识,尝试将220V的交流电转化为我们指定电压的直流电。 设计原理 将220V交流电转化为直流电的方法常用的有通过变压器…...
使用Nginx和uwsgi在自己的服务器上部署python的flask项目
Nginx 是一个高性能的 HTTP 和反向代理服务。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。 Nginx 专为性能优化而开发,性能是其最重要的考量指标,实现上非常注重效率,能经受…...
【Windows 开发环境配置——NVIDIA 篇】CUDA、cuDNN、TensorRT 三件套安装
CUDA 从CUDA Toolkit Archive下载相应版本的离线安装包,这里以11.7为例。 打开安装包,在安装选项选择自定义模式,点击下一步。 在自定义安装选项中,仅选择CUDA组件(其中Nsight相关组件用于代码调试与性能分析ÿ…...
【C++】【Opencv】cv::GaussianBlur、cv::filter2D()函数详解和示例
本文通过函数详解和运行示例对cv::GaussianBlur和cv::filter2D()两个函数进行解读,最后综合了两个函数的关系和区别,以帮助大家理解和使用。 目录 cv::GaussianBlur()函数详解运行示例 filter2D()函数详解运行示例 总结两个函数联…...
【数据分享】1961—2022年全国范围的逐日降水栅格数据
降水数据是我们在各项研究中最常用的气象指标之一!之前我们给大家分享过来源于国家青藏高原科学数据中心发布的1901-2022年1km分辨率逐月降水栅格数据以及1901-2022年1km分辨率逐年降水栅格数据(均可戳我跳转)!很多小伙伴拿到数据…...
[Linux] 网络文件共享服务
一、存储类型 存储类型可分为三类:DAS(直连式存储),NAS(网络附加存储),SAN(存储区域网络)。 1.1 DAS 定义: DAS是指直连存储,即直连存储,可以理解为本地文…...
二十七、W5100S/W5500+RP2040树莓派Pico<iperf 测速示例>
文章目录 1 前言2 简介2 .1 什么是网络测速技术?2.2 网络测速技术的优点2.3 网络测速技术数据交互原理2.4 网络测速应用场景 3 WIZnet以太网芯片4 示例概述以及使用4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意事项6 相关链接 1 前言…...
非常经典的一道SQL报错注入题目[极客大挑战 2019]HardSQL 1(两种解法!)
题目环境: 没错,又是我,这群该死的黑客竟然如此厉害,所以我回去爆肝SQL注入,这次,再也没有人能拿到我的flag了 做了好多这个作者出的题了,看来又要上强度了 判断注入类型 username:a…...
002-AI客服-RAG优化分析
文章目录前言项目结构概览与实现状态总结当前状态📊 项目概况🏗️ 技术架构✅ 已实现功能⚠️ 有待修复的问题📝 下一步规划📊 当前 RAG 现状🧭 RAG 优化全景图🥇 强烈推荐的 5 个优化(按性价比…...
《AI智能体(Agent)深度解析:2026年从被动对话到主动自主工作的技术革命》
近两年大模型完成了从“参数堆叠”到“能力进化”的跨越,而2026年AI行业的核心变革趋势,早已不再是更大参数的模型比拼,而是AI智能体(Agent)的规模化落地。传统AI对话模式,本质是被动响应式交互,…...
技术人的职业规划:打造成功的职业生涯
技术人的职业规划:打造成功的职业生涯 引言 作为一名技术人,职业规划是实现职业目标的关键。在快速变化的技术领域,一个清晰的职业规划可以帮助我们明确方向,抓住机会,实现个人价值。 回顾我的职业历程,从一…...
2026.5.24-要闻
宁波大学附属康宁医院李广学副主任医师指出,每天刷手机超5小时会显著增加肥胖风险(儿童群体风险增幅达74%),并导致前额叶等脑区代谢减弱,引发注意力、记忆力下降。1 8小时前...
权威测评!2026年顶尖AI论文写作软件榜单,高质初稿轻松写
2026 年实测 10 款主流 AI 论文工具,千笔AI以全流程覆盖 语义级降重 免费查重领跑综合榜;ThouPen 稳坐留学生毕业全流程工具头把交椅;免费工具中DeepSeek Scholar、豆包学术版表现亮眼,30 分钟即可生成万字高质量初稿࿰…...
3分钟快速上手:通达信缠论可视化插件终极使用指南
3分钟快速上手:通达信缠论可视化插件终极使用指南 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 通达信缠论可视化插件是一款专为股票投资者设计的缠论技术分析工具,能够将复杂的…...
3分钟掌握novel-downloader:打造你的永久小说图书馆终极指南
3分钟掌握novel-downloader:打造你的永久小说图书馆终极指南 【免费下载链接】novel-downloader 一个可扩展的通用型小说下载器。 项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader 你是否曾经因为小说网站突然关闭、章节被删除或VIP内容无法离…...
使用taotoken聚合api为智能客服场景提供稳定大模型支持
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Taotoken聚合API为智能客服场景提供稳定大模型支持 智能客服系统是许多企业服务用户的核心环节,其回答的准确性、及…...
倒计时36个月:欧盟《AI搜索透明度法案》草案曝光,所有商用AI搜索引擎必须通过可解释性审计——附合规自查清单v2.1
更多请点击: https://kaifayun.com 第一章:倒计时36个月:欧盟《AI搜索透明度法案》草案的战略影响 距离欧盟《AI搜索透明度法案》(AI Search Transparency Act, AISTA)草案正式生效仅剩36个月,该立法已进入…...
紧急通告:Gemini当前版本对非RGB图像(CMYK/灰度/16bit TIFF)存在系统性解析缺陷!已确认影响金融票据识别与工业质检部署,补丁预计Q3上线
更多请点击: https://kaifayun.com 第一章:Gemini图片理解能力测试 Gemini 模型在多模态理解方面展现出显著的图像解析能力,尤其在细粒度视觉推理、文字识别(OCR)、场景语义理解及跨模态对齐任务中表现突出。为系统评…...
