Python基础——正则匹配中高阶用法

1.正则使用变量匹配re.escape()

re.escape() 是一个用于转义正则表达式中特殊字符的函数。当我们需要使用变量构建正则表达式模式时,为了避免特殊字符对模式的解析产生影响,我们可以使用 re.escape() 函数来自动转义这些特殊字符。

例如,如果我们有一个字符串变量 a,并且想要将它插入到正则表达式模式中,我们可以使用 re.escape(a) 来确保变量中的特殊字符被正确转义。

以下是一个示例:

import re# 定义变量
a = "测试中."# 构建正则表达式模式
pattern = r"这是一个{}的例子".format(re.escape(a))# 在文本中查找匹配项
text = "这是一个测试中.的例子"
match = re.search(pattern, text)if match:print("找到匹配项")
else:print("未找到匹配项")

在上面的示例中,我们使用 re.escape(a) 来转义变量 a 中的特殊字符(例如点号.),以确保它们不会干扰正则表达式模式的解析。

2.正则使用函数匹配re.sub()

re.sub() 是 Python 中用于替换字符串中匹配正则表达式模式的方法。它可以在字符串中搜索匹配模式的部分,并用指定的替换字符串来替换它们。

re.sub(pattern, repl, string, count=0, flags=0) 的参数解释如下:

  • pattern: 要匹配的正则表达式模式。
  • repl: 替换匹配模式的字符串,可以是一个固定的字符串,也可以是一个函数。
  • string: 要进行替换操作的原始字符串。
  • count: 可选参数,指定最多进行多少次替换,默认为 0,表示替换所有匹配项。
  • flags: 可选参数,用于指定正则表达式的匹配模式。

下面示例,演示了 re.sub() 的用法:

import re# 替换匹配项为固定字符串
text = "Hello, World!"
new_text = re.sub(r"World", "Python", text)
print(new_text)  # 输出: Hello, Python!# 替换匹配项为另一个匹配项的一部分
text = "John Doe, Jane Doe"
new_text = re.sub(r"Doe", r"Smith", text)
print(new_text)  # 输出: John Smith, Jane Smith# 使用函数进行替换
def to_upper(match):return match.group(0).upper()text = "hello, world!"
new_text = re.sub(r"\b\w+\b", to_upper, text)
print(new_text)  # 输出: HELLO, WORLD!

在上面的示例中,我们使用 re.sub() 进行了不同种类的替换操作。第一个示例中,我们将字符串中的 “World” 替换为 “Python”。第二个示例中,我们将 “Doe” 替换为 “Smith”。第三个示例中,我们使用函数 to_upper() 将匹配到的单词转换为大写。

3.匹配特定值的前几位或者后几位

正则匹配以’test’开头的前10位,以’test’结尾的后10位

你可以使用以下正则表达式来匹配字符串中以’test’开头的前10位和以’test’结尾的后10位:

import re# 原始字符串
text = "123423434543524353452342024年01月01日测试中撒旦发射点手动阀手动阀手动阀234545334test1234567890"# 匹配以'test'开头的前10位
pattern_start = r"^test.{6}"
match_start = re.search(pattern_start, text)if match_start:matched_start = match_start.group()print("以'test'开头的前10位:", matched_start)
else:print("未找到匹配的内容")# 匹配以'test'结尾的后10位
pattern_end = r".{10}test$"
match_end = re.search(pattern_end, text)if match_end:matched_end = match_end.group()print("以'test'结尾的后10位:", matched_end)
else:print("未找到匹配的内容")

在上述代码中,我们使用了正则表达式模式来进行匹配。^test.{6} 表示以’test’开头,后面紧跟着任意6个字符;.{10}test$ 表示任意10个字符,后面紧跟着’test’结尾。通过 re.search() 函数来搜索匹配项,并提取出匹配的内容。

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

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

相关文章

微信小程序css实现的联系客服动画样式

一 、效果 二、代码 wxml <view class"customer-service"><button class"btn" open-type"contact"></button><image class"pic" src"https://ts4.cn.mm.bing.net/th?idOIP-C.3SGSiRPuOU9uH5VNVOMPwgHaHa…

序列的Z变换(信号的频域分析)

1. 关于Z变换 2. 等比级数求和 3. 特殊序列的Z变换 4. 因果序列/系统收敛域的特点 5. 例题

navigationBar顶部导航栏,兼容适配所有机型(附完整案例)

思路 隐藏原生样式获取胶囊按钮、状态栏相关数据以供后续计算根据不同机型计算出该机型的导航栏高度,进行适配编写为导航栏公共组件使用组件1. 隐藏原生样式 全局设置 "window": {"navigationStyle": "custom" }单个页面设置 {"navigat…

免费的AI文案生成器有哪些?AI文案生成器排行榜

在当今数字化的时代&#xff0c;内容创作已成为许多行业不可或缺的一部分。为了满足日益增长的创作需求&#xff0c;越来越多的人开始寻找能够提高效率、同时保持原创性的解决方案。本文将专心分享一些优质的AI文案生成器。 AI文案生成器的需求 内容创作已经不再是传统媒体和市…

高项备考葵花宝典-项目进度管理输入、输出、工具和技术(上,很详细考试必过)

项目进度管理的目标是使项目按时完成。有效的进度管理是项目管理成功的关键之一&#xff0c;进度问题在项目生命周期内引起的冲突最多。 小型项目中&#xff0c;定义活动、排列活动顺序、估算活动持续时间及制定进度模型形成进度计划等过程的联系非常密切&#xff0c;可以视为一…

C语言基础

常量和常量表达式的区别 #define N 4;又是常量&#xff0c;又是常量表达式&#xff0c;其在编译期预处理阶段就会直接替换 const int M 5;只是常量&#xff0c;不是常量表达式 &#xff0c;其是存储在一块内存区域之内的&#xff0c;但是存储的值不能改变 常量表达式&#xff…

【USB、串口、COM口、TTL、RS-232、RS-485区别详解】

USB&#xff0c;串口&#xff0c;COM口&#xff0c;TTL&#xff0c;RS-232&#xff0c;RS-485区别详解 1. USB&#xff0c;串口&#xff0c;COM口&#xff0c;TTL&#xff0c;RS-232&#xff0c;RS-485区别详解2 USB转TTL2 RS-232转TTL3 USB4 UART5 STM32串口异步通讯需要定义的…

iOS——定位与地图

平时在写项目的时候可能会遇到需要使用定位服务的地方&#xff0c;比如说获取位置和导航等。因此这里我会使用OC自带的库以及苹果系统的地图来获取定位以及显示在地图上。 开始前的设置 在获取定位前&#xff0c;需要在项目文件的info中添加两个关键字&#xff0c;用于向用户…

从零开始的C++(二十一)

C11 1.列表初始化&#xff1a; //允许以下代码正确运行int a[]{1,2,3};//效果与int a[]{1,2,3}一致 即允许省略等于号。同时&#xff0c;允许用花括号对所有自定义类型和内置类型进行初始化&#xff0c;而非以前花括号只能对数组进行初始化。利用花括号对自定义类型初始化时…

LeetCode刷题--- 求根节点到叶节点数字之和

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏&#xff1a;http://t.csdnimg.cn/ZxuNL http://t.csdnimg.cn/c9twt 前言&#xff1a;这个专栏主要讲述递归递归、搜索与回溯算法&#xff0c;所以下面题目主要也是这些算法做的 我讲述…

【ITK库学习】使用itk库进行图像滤波ImageFilter:邻域滤波

目录 1、itkMeanImageFilter 均值滤波器2、itkMedianImageFilter 中值滤波器3、itkBinaryMedianImageFilter 二值中值滤波器4、扩展itkNeighborhood5、扩展itkNeighborhoodIterator6、扩展itkNeighborhoodOperator 领域滤波是一种信号处理方法&#xff0c;用于去除信号中的噪声…

★560. 和为 K 的子数组(自己做出来了)

560. 和为 K 的子数组 前缀和的知识。 如果要求i~j下标之间的元素和&#xff0c;用前缀和的话&#xff0c;应该是b[j] - b[i-1]&#xff0c;i处的值也应该包括。 所以这个题&#xff0c;前缀和数组就要比原数组整体向后平移一个单元格&#xff0c;不然在求0~n的和的时候没法取…

在python中安装库,会有conda安装,也会有pip安装,conda与pip的区别是什么?

文章目录 一、Conda是什么&#xff1f;二、pip是什么&#xff1f;三、pip与conda的区别&#xff1a;总结 一、Conda是什么&#xff1f; Conda是一个开源的包管理系统&#xff0c;它是Anaconda公司为Python和其他编程语言开发的。它主要用于数据科学和机器学习领域&#xff0c;…

【Vue】日常错误总结(持续更新)

日常遇到的小问题汇总, 内容小篇幅少的就全放这里了, 内容多的会在Vue专栏单独分享~ 目录 【Q】 el-form-item值为 null 或 undefined显示““ 【Q】dialog内组件数据刷新总是延迟慢一拍 问题背景描述 解决方案 代码简单模拟 JS 【Q】el-input 不能输入的解决办法 方法…

Educational Codeforces Round 156 (Rated for Div. 2)补题

Sum of Three 题目大意&#xff1a;将一个正整数n分成3个不同的正整数x,y,z,保证三个数都不能整除3&#xff0c;如果无法实现就输出NO. 思路&#xff1a;这个题实际上特别简单&#xff0c;我们可以发现当n比较大的时候&#xff0c;我们可以从中取1&#xff0c;然后第二个数也…

【Java】Java环境以及EditPlus编辑器安装与配置流程

要安装和配置Java环境以及EditPlus编辑器&#xff0c;请按照以下步骤操作&#xff1a; ### 安装Java Development Kit (JDK) 1. 访问Java官方网站下载最新版本的JDK。 2. 运行下载的JDK安装程序&#xff0c;并按照提示完成安装。 3. 安装完成后&#xff0c;记下JDK的安装路径&a…

perf与火焰图-性能分析工具

参考链接 perf性能分析工具使用分享 如何读懂火焰图&#xff1f;-阮一峰 perf基本用法-record,report-知乎 火焰图抓取 准备&#xff1a; centos安装perf工具 dnf install perf下载火焰图解析代码 git clone https://github.com/brendangregg/FlameGraph.git抓取指定进程…

Orcal数据库Schema理解、表分区理解

目录 1 Schema1.1 Orcal数据库示例1.2 MySQL数据库示例 2 Orcal表分区2.1 创建表分区2.2 查看表分区2.3 查看指定分区数据 此前未了解过Schema的概念&#xff0c;仅知道Orcal数据库比较侧重这个概念&#xff0c;搜遍全网都&#xff0c;都是啰哩吧嗦的搬抄定义&#xff0c;特此在…

LeetCode算法题解(单调栈)|LeetCode503. 下一个更大元素 II、LeetCode42. 接雨水

一、LeetCode503. 下一个更大元素 II 题目链接&#xff1a;503. 下一个更大元素 II 题目描述&#xff1a; 给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个元素的 下一个更大元素 。 数字 x 的…

LIMoE:使用MoE学习多个模态

文章链接&#xff1a;Multimodal Contrastive Learning with LIMoE: the Language-Image Mixture of Experts 发表期刊&#xff08;会议&#xff09;: NeurIPS 2022 目录 1.背景介绍稀疏模型 2.内容摘要Sparse Mixture-of-Experts ModelsContrastive LearningExperiment Analy…