Python基础10-使用正则表达式进行文本处理

news2024/12/23 20:37:19

在编程过程中,我们经常需要对文本进行处理,以提取、替换或分割特定的字符串。正则表达式(Regular Expression)是一种强大的文本处理工具,它可以帮助我们实现这些任务。以下是使用正则表达式进行文本处理的一些基本方法:
在这里插入图片描述

  1. 基本模式匹配

要在字符串中查找与模式匹配的项:

import re
text = "在这个字符串中搜索模式。"
match = re.search(r"模式", text)
if match:
    print("找到模式!")
  1. 编译正则表达式

要重复使用正则表达式,可以将其编译为模式对象:

pattern = re.compile(r"模式")
match = pattern.search(text)
  1. 匹配开头或结尾

要检查字符串是否以特定模式开头或结尾:

if re.match(r"^搜索", text):
    print("以 '搜索' 开头")
if re.search(r"模式。$", text):
    print("以 '模式。' 结尾")
  1. 查找所有匹配项

要在字符串中查找模式的所有出现:

all_matches = re.findall(r"t\w+", text)  # 查找以 't' 开头的单词
print(all_matches)
  1. 搜索和替换(替换)

要在字符串中替换模式的出现:

replaced_text = re.sub(r"句子", "语句", text)
print(replaced_text)
  1. 分割字符串

要根据模式在字符串中的出现进行分割:

words = re.split(r"\s+", text)  # 在一个或多个空格处拆分
print(words)
  1. 转义特殊字符

要匹配特殊字符,请对其进行转义:

escaped = re.search(r"\b搜索\b", text)  # \b 是单词边界
  1. 分组和捕获

要对模式的一部分进行分组并提取其值:

match = re.search(r"(\w+) (\w+)", text)
if match:
    print(match.group())  # 整个匹配
    print(match.group(1)) # 第一个组
  1. 非捕获组

要定义不捕获的组:

match = re.search(r"(?:\w+) (\w+)", text)
if match:
    print(match.group(1))  # 第一个(也是唯一的)组
  1. 前瞻和后顾断言

要根据模式前后的内容匹配模式,而不包括结果中的内容:

lookahead = re.search(r"\b\w+(?= 字符串)", text)  # 在 ' 字符串' 前的单词
lookbehind = re.search(r"(?<=搜索 )\w+", text)  # 在 '搜索 ' 后的单词
if lookahead:
    print(lookahead.group())
if lookbehind:
    print(lookbehind.group())
  1. 修改模式匹配行为的标志

要使用诸如 re.IGNORECASE 之类的标志更改模式匹配方式:

case_insensitive = re.findall(r"搜索", text, re.IGNORECASE)
print(case_insensitive)
  1. 使用命名组

要为组分配名称并按名称引用它们:

match = re.search(r"(?P<first>\w+) (?P<second>\w+)", text)
if match:
    print(match.group('first'))
    print(match.group('second'))
  1. 跨多行匹配

要使用 re.MULTILINE 标志在多行中匹配模式:

multi_line_text = "开始\n中间 结束"
matches = re.findall(r"^m\w+", multi_line_text, re.MULTILINE)
print(matches)
  1. 懒惰量词

要使用懒惰量词(*?、+?、??)尽可能少地匹配字符:

html = "<body><h1>标题</h1></body>"
match = re.search(r"<.*?>", html)
if match:
    print(match.group())  # 匹配 '<body>'
  1. 详细正则表达式

要使用 re.VERBOSE 获得更易读的正则表达式:

pattern = re.compile(r"""
    \b      # 单词边界
    \w+     # 一个或多个单词字符
    \s      # 空格
    """, re.VERBOSE)
match = pattern.search(text)

通过以上方法,我们可以在 Python 中使用正则表达式轻松地处理文本。在实际应用中,可以根据需要选择合适的方法来实现各种文本处理任务。

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

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

相关文章

羊大师讲解五一假期,探索羊奶的健康奥秘

羊大师讲解五一假期&#xff0c;探索羊奶的健康奥秘 随着五一假期的到来&#xff0c;许多人选择出游、休息或与家人共度美好时光。在这个特别的时刻&#xff0c;我们或许可以停下来&#xff0c;探索一种营养丰富、历史悠久的饮品——羊奶。 羊奶&#xff0c;作为大自然赐予我…

LeetCode in Python 74/240. Search a 2D Matrix I/II (搜索二维矩阵I/II)

搜索二维矩阵I其实可以转换为搜索一维数组&#xff0c;原因在于&#xff0c;只要先确定搜索的整数应该在哪一行&#xff0c;即可对该行进行二分查找。 搜索二维矩阵II中矩阵元素排列方式与I不同&#xff0c;但思想大致相同。 目录 LeetCode in Python 74. LeetCode in Pyth…

Qt | QAbstractButton 抽象类

QAbstractButton 类中的属性 ①、autoExclusive:bool 访问函数:bool autoExclusive() const; void setAutoExclusive(bool); 描述了按钮的自动排他性,若启用了该属性,则属于同一父部件的可选中按钮的行为, 就好像是在同一排他性组中的按钮一样。除了单选按钮,默认为关…

如何进行域名解析?如何清理DNS缓存?(附源码)

目录 1、什么是域名&#xff1f; 2、为什么使用域名&#xff1f; 3、域名解析的完整流程 4、调用gethostbyname系统接口将域名解析成IP地址 5、为什么需要清理系统DNS缓存&#xff1f; 6、使用cmd命令清理DNS缓存 7、通过代码去清除系统DNS缓存 C软件异常排查从入门到精…

数据结构---线性表(顺序表)附代码

目录&#xff1a; 数据结构相关概念 1、什么是数据结构&#xff1f; 2、为什么需要数据结构&#xff1f; 顺序表 1、顺序表的概念及结构 1.1 线性表 1.2 顺序表 2、顺序表分类 3、动态顺序表的实现 什么是数据结构&#xff1f;&#xff1f; 数据结构是由 “数据”和 …

Redis高级篇详细讲解

0.今日菜单 Redis持久化【理解】 Redis主从 Redis哨兵 Redis分片集群【运维】 单点Redis的问题 数据丢失问题&#xff1a;Redis是内存存储&#xff0c;服务重启可能会丢失数据 并发能力问题&#xff1a;单节点Redis并发能力虽然不错&#xff0c;但也无法满足如618这样的高…

用不了ChatGPT?快试试免费又强大的Anthropic Claude

一、Claude 简介 Anthropic 官方&#xff1a; https://www.anthropic.com/product Claude 是最近新开放的一款 AI 聊天机器人&#xff0c;是世界上最大的语言模型之一&#xff0c;比之前的一些模型如 GPT-3 要强大得多&#xff0c;因此 Claude 被认为是 ChatGPT 最有力的竞争…

C语言:一维数组、二维数组、字符数组介绍

数组 介绍一维数组定义应用方法初始化 举例示例结果 二维数组定义应用方法初始化 举例示例结果 字符数组定义应用方法初始化 举例示例结果分析 介绍 在C语言中&#xff0c;数组是一种基本的数据结构&#xff0c;用于存储一系列相同类型的数据。数组可以是多维的&#xff0c;最…

助力企业挖掘市场商机,赛盈分销与UseePay联合举办家居用品DTC品牌出海峰会!

随着中国经济的井喷式发展以及政策的扶持与完善下&#xff0c;中国家居品牌在全球市场上的实力不断被夯实&#xff0c;国内家居品牌数量不仅激增&#xff0c;商品也更加深远持久影响着海外消费者的生活。 中国家居企业出海之路曾陷入危机当中&#xff0c;而2023年年终的经济复苏…

多行Textview 计算切分后的长度,并回退长度

实现类似的效果&#xff0c;一个多行的 textview&#xff0c; 如果赋值一个超长的字符&#xff0c;尾部长度回退部分&#xff0c;并添加 ... 最后添加一个详情按钮。 如果不超长则不显示详情 效果如图&#xff1a; 获取截断之后的字符长度 fun getLimitedCharacterCount(textV…

微信小程序:9.小程序配置

全局配置文件 小程序根目录下的app.json文件是小程序的全局配置文件。 常用的配置文件如下: pages 记录当前小程序所有的页面存放路径信息 window 全局设置小程序窗口外观 tabBar 设置小程序底部的tabBar效果 style 是否启用新版style 小程序窗口的组成部分 了解windo节点常…

NAT网络地址转换实验(思科)

华为设备参考&#xff1a;NAT网络地址转换实验&#xff08;华为&#xff09; 一&#xff0c;技术简介 NAT&#xff08;Network Address Translation&#xff09;&#xff0c;即网络地址转换技术&#xff0c;是一种在现代计算机网络中广泛应用的技术&#xff0c;主要用于有效管…

2024.4.26——LeetCode 高频题复盘

目录 3. 无重复字符的最长子串206. 反转链表146. LRU 缓存215. 数组中的第K个最大元素25. K 个一组翻转链表15. 三数之和53. 最大子数组和21. 合并两个有序链表1. 两数之和5. 最长回文子串912. 排序数组 3. 无重复字符的最长子串 题目链接 class Solution:def lengthOfLongest…

OV SSL证书申请指南——六步轻松搞定

OV证书的申请流程如下&#xff1a; 一 确定申请渠道 根据自己的品牌偏好&#xff0c;选择一个证书服务商&#xff0c;这里推荐JoySSL,作为国产服务商&#xff0c;除了提供Digicert、Sectigo、Geotrust、Globalsign等国际品牌证书外&#xff0c;还拥有自主品牌OV证书。在JoySSL…

Linux报错处理:‘abrt-cli status’ timed out

最近登录服务器时出现报错&#xff0c;后来查阅资料发现是因为ssh登录时间很久&#xff0c;登录后出现abrt-cli status timed out 的报错。 1.问题分析 abrt-cli是ABRT(Automated Bug Reporting Tool)的命令行接口&#xff0c;用于在Linux系统中处理和报告程序崩溃。 如果abr…

C语言笔试题之重排链表

重排链表 实例要求 1、给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln - 1 → Ln2、请将其重新排列后变为&#xff1a; L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …3、不能只是单纯的改变节点内部的值&#xff0c;而是…

Java八种包装类、常量池

文章目录 一、八种基本数据类型及其包装类1.1 类型详解1.2 基本类型与包装类型相互转换——自动装箱拆箱 二、Java常量池三、包装类的常量池技术&#xff08;缓存池&#xff09;3.1 各包装类缓冲池范围3.2 Integer i1new Integer(5) 与 Integer i25 的区别3.3 Integer.valueOf(…

ADOP带您科普什么是单纤双向BiDi光模块?一根光纤,双向通信:单纤双向模块的革命性技术。

单纤双向光模块&#xff08;也称为BiDi光模块&#xff09;是一种使用WDM&#xff08;波分复用&#xff09;双向传输技术的光模块&#xff0c;它在一根光纤上实现了同时进行光通道内的双向传输。相比常规光模块&#xff08;有两个光纤插孔&#xff09;&#xff0c;BiDi光模块只有…

playwright 使用

pip install playwright 是一个命令&#xff0c;用于通过 Python 的包管理工具 pip 安装 Playwright 库。Playwright 是一个用于端到端网页测试的库&#xff0c;支持多种浏览器&#xff0c;包括 Chromium、Firefox 和 WebKit。 执行 pip install playwright 命令后&#xff0c…

SCSS全局配置 vue项目(二)

目录 1、先要查看node版本 2、安装对应的node-sass、sass-loader版本 2.1根据项目使用的node版本安装对应的node-sass版本 2.2根据node-sass版本选择兼容的sass-loader版本&#xff0c;不然项目无法正常运行 3、在 vue.config.js 中配置&#xff1a; 4、在组件中…