【Python正则表达式】:文本解析与模式匹配

Python 中的正则表达式(Regular Expressions)是一种强大的文本处理工具,它允许你定义一种搜索、匹配或替换文本中字符串的模式。Python 通过 re 模块提供了对正则表达式的支持。下面是一些基本的使用方法和示例,帮助你理解如何在 Python 中使用正则表达式进行文本解析和模式匹配。

导入 re 模块

首先,你需要导入 Python 的 re 模块:

import re

基本匹配

使用 re.match() 函数尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match() 就返回 None

import re

pattern = r'hello'
text = 'hello world'
match = re.match(pattern, text)

if match:
    print("Match found:", match.group())
else:
    print("No match")

搜索字符串

如果你想要搜索整个字符串来查找匹配项,可以使用 re.search() 函数。

import re

pattern = r'world'
text = 'hello world'
match = re.search(pattern, text)

if match:
    print("Match found:", match.group())
else:
    print("No match")

查找所有匹配项

使用 re.findall() 函数可以查找字符串中所有与正则表达式匹配的项,并返回一个列表。

import re

pattern = r'\bfoo\b'
text = 'foo bar foo baz foo'
matches = re.findall(pattern, text)

print("Matches:", matches)

分割字符串

re.split() 函数可以根据正则表达式来分割字符串。

import re

pattern = r'\s+'
text = 'one two   three   four'
parts = re.split(pattern, text)

print("Parts:", parts)

替换字符串

re.sub() 函数用于替换字符串中所有匹配正则表达式的部分。

import re

pattern = r'\bfoo\b'
text = 'foo bar foo baz foo'
new_text = re.sub(pattern, 'bar', text)

print("New Text:", new_text)

编译正则表达式

为了提高效率,可以将正则表达式编译成一个模式对象,然后使用这个对象进行匹配、搜索、替换等操作。

import re

pattern = re.compile(r'\bfoo\b')
text = 'foo bar foo baz foo'

matches = pattern.findall(text)
print("Matches:", matches)

new_text = pattern.sub('bar', text)
print("New Text:", new_text)

注意事项

  • 正则表达式中的特殊字符(如 ., *, ?, +, ^, $, (, ), [, ], {, }, \, |, - 等)需要被转义(即在前面加上反斜杠 \)才能作为普通字符处理。
  • \b 是一个特殊字符,表示单词边界。
  • 原始字符串(在字符串前加 r)可以避免在字符串中对反斜杠进行转义。

通过掌握这些基本用法和注意事项,你可以有效地使用 Python 的 re 模块来处理和分析文本数据。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于PHP的新闻管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于phpMySQL的新闻管理系统。…

[js逆向学习] fastmoss电商网站——店铺排名

逆向目标 网站:https://www.fastmoss.com/shop-marketing/tiktok接口:https://www.fastmoss.com/api/shop/shopList/参数:fm-sign 逆向分析 我们今天要分析的是店铺排名,先分析网络请求,找到目标接口 按照上图操作…

JUC高并发编程2:Lock接口

1 synchronized 1.1 synchronized关键字回顾 synchronized 是 Java 中的一个关键字,用于实现线程间的同步。它提供了一种简单而有效的方式来控制对共享资源的访问,从而避免多个线程同时访问同一资源时可能出现的竞态条件(race condition&am…

.net core8 使用JWT鉴权(附当前源码)

说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发)。 该系统文章,我会尽量说的非常详细,做到不管新手、老手都能看懂。 说明:OverallAuth2.0 是一个简单、易懂、功能强…

LeetcodeTop100 刷题总结(二)

LeetCode 热题 100:https://leetcode.cn/studyplan/top-100-liked/ 文章目录 八、二叉树94. 二叉树的中序遍历(递归与非递归)补充:144. 二叉树的前序遍历(递归与非递归)补充:145. 二叉树的后序遍…

你的提交信息还在拖后腿?看这里,提升代码质量的绝招!

文章目录 前言一、什么是约定式提交?二、创建新仓库三、将代码推送到远程仓库的步骤1.检查当前远程仓库2.添加代码到暂存区3. 进行约定式提交4. 推送代码到远程仓库5. 完成推送 总结 前言 在当今软件开发领域,Git已经成为最广泛使用的版本控制系统之一。…

java算法OJ(1)位运算

目录 1.前言 2.正文 2.1位运算符号 2.1俩数相除 2.1.1题目 2.1.2示例 2.1.3题解 2.2二进制求和 2.2.1题目 2.2.2示例 2.2.3题解 2.3只出现一次的数字 2.3.1题目 2.3.2示例 2.3.3题解 2.4只出现一次的数字(进阶版) 2.4.1题目 2.4.2示例…

【ComfyUI】控制光照节点——ComfyUI-IC-Light-Native

原始代码(非comfyui):https://github.com/lllyasviel/IC-Light comfyui实现1(600星):https://github.com/kijai/ComfyUI-IC-Light comfyui实现2(500星):https://github.c…

cobbler自动批量安装多版本操作系统

本次虚拟化环境为VMware Workstation Pro,cobbler服务端为CentOS7.9,需要自动安装的版本为CentOS7.9和CentOS8.1 目录 一、安装cobbler服务端1、修改YUM源2、关闭防火墙3、安装软件包4、cobbler环境配置5、解决语法问题6、启动服务7、导入镜像8、自定义…

Spring自定义参数解析器

在这篇文章中,我们认识了参数解析器和消息转换器,今天我们来自定义一个参数解析器。 自定义参数解析器 实现HandlerMethodArgumentResolver的类,并注册到Spring容器。 Component//注册到Spring public class UserAr…

统信服务器操作系统【Cron定时任务服务】

Cron定时任务服务服务介绍、服务管理、服务配置 文章目录 一、功能概述二、功能介绍1. Cron 服务管理2.Cron 服务管理3.Cron 服务配置run-parts一、功能概述 cron是一个可以用来根据时间、日期、月份、星期的组合来 调度对周期性任务执行的守护进程。利用 cron 所提供的功能,可…

第十四届蓝桥杯嵌入式国赛

一. 前言 本篇博客主要讲述十四届蓝桥杯嵌入式的国赛题目,包括STM32CubeMx的相关配置以及相关功能实现代码以及我在做题过程中所遇到的一些问题和总结收获。如果有兴趣的伙伴还可以去做做其它届的真题,可去 蓝桥云课 上搜索历届真题即可。 二. 题目概述 …

七种修复错误:由于找不到msvcr110.dll 无法继续执行的方法

当你在运行某些程序时遇到“找不到msvcr110.dll”的错误提示,这通常意味着你的系统缺少了Microsoft Visual C 2012 Redistributable包中的一个重要文件。这个DLL文件是Microsoft Visual C Redistributable的一部分,用于支持许多使用Visual C编写的软件和…

Elasticsearch:检索增强生成背后的重要思想

作者:来自 Elastic Jessica L. Moszkowicz 星期天晚上 10 点,我九年级的女儿哭着冲进我的房间。她说她对代数一无所知,注定要失败。我进入超级妈妈模式,却发现我一点高中数学知识都不记得了。于是,我做了任何一位超级妈…

多颜色绘制语义分割/变化检测结果图

在论文绘图时,传统的二元语义分割结果图颜色单一(下图左),所以论文中常根据混淆矩阵类别使用多颜色进行绘制(下图右),可以看到,结果的可视化效果更好。 以下是绘制代码: …

Windows系统的Tomcat日志路径配置

文章目录 引言I Windows系统的Tomcat日志路径配置配置常规日志路径访问日志路径配置,修改server.xmlII 日志文件切割:以分隔割tomcat 的 catalina.out 文件为例子通过Linux系统自带的切割工具logrotate来进行切割引言 需求:C盘空间不足,处理日志文件,tomcat日志迁移到D盘…

Java基础知识扫盲

目录 Arrays.sort的底层实现 BigDecimal(double)和BigDecimal(String)有什么区别 Char可以存储一个汉字吗 Java中的Timer定时调度任务是咋实现的 Java中的序列化机制是咋实现的 Java中的注解是干嘛的 Arrays.sort的底层实现 Arrays.sort是Java中提供的对数组进行排序的…

信用卡存量经营读书笔记

信用卡的各项收益和损失分析表 用杜邦分析法拆利润如下 信用卡要不要烧钱?不要,因为没有网络效应(用户量增加带来的优惠比较少)和赢家通吃的情况 线上获客的几种方式:引流分成、某个项目的联名信用卡、营业收入分成 …

爬虫到底难在哪里?

如果你是自己做爬虫脚本开发,那确实难,因为你需要掌握Python、HTML、JS、xpath、database等技术,而且还要处理反爬、动态网页、逆向等情况,不然压根不知道怎么去写代码,这些技术和经验储备起码得要个三五年。 比如这几…

【D3.js in Action 3 精译_023】3.3 使用 D3 将数据绑定到 DOM 元素

当前内容所在位置: 第一部分 D3.js 基础知识 第一章 D3.js 简介(已完结) 1.1 何为 D3.js?1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践(上)1.3 数据可视化最佳实践(下)1.4 本…