re轻松拆分四则运算expression(^从头匹配、(?:xxxx)非捕获组、| 交替运算符联合演习)

news2024/11/16 17:35:56

与ai对抵聊“算式匹配”,发现^从头匹配、(?:xxxx)非捕获组、| “交替”运算符联合使用的妙处。


(笔记模板由python脚本于2024年09月27日 18:35:32创建,本篇笔记适合喜欢python喜欢正则的coder翻阅)


【学习的细节是欢悦的历程】

  • Python 官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
    地址:https://lqpybook.readthedocs.io/


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


与ai对抵聊四则“算式匹配”
拆分四则运算算式
(发现^、(?:xxxx)、| 联合使用的妙处)


本文质量分:

97 97 97

本文地址: https://blog.csdn.net/m0_57158496/article/details/142600625

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ 拆分四则运算算式
    • 1、强横的split_expression
    • 2、匹配表达式解析
    • 3、所含知识点
    • 4、ai学伴的肯定和鼓励
    • 5、总结


◆ 拆分四则运算算式


1、强横的split_expression


两行代码函数


def split_expression(expression: str) -> list:
    pattern = r'(?:^[+-]?\d+)|(?:[*/+-])|(?:\d+)' # 正则表达式,匹配数字(包括正负号)和运算符
    return re.findall(pattern, expression) # 使用 re.findall 查找所有匹配项


函数测试

# 测试算式拆分
print(f"\n\n{' 算式拆分测试 ':-^36}\n\n") 
expressions = ('+45-56*5',
'-5/2*6',
	'56/7*6-4',
	'999-888*234/9',
	'+56/67',
	'99/3-531*4+55',
'+5/2+6-45*4')

for expr in expressions:
    parts = split_expression(expr)
    print('\n', expr, '->', parts)

print(f"\n\n{'-'*42}") 


  • 测试效果截屏图片
    在这里插入图片描述
    如图所示,算式都得到了正确拆分,足以见证re正则匹配的强横!💪💪

-------------- 算式拆分测试 --------------


+45-565 -> [’+45’, ‘-’, ‘56’, '’, ‘5’]

-5/26 -> [’-5’, ‘/’, ‘2’, '’, ‘6’]

56/76-4 -> [‘56’, ‘/’, ‘7’, '’, ‘6’, ‘-’, ‘4’]

999-888234/9 -> [‘999’, ‘-’, ‘888’, '’, ‘234’, ‘/’, ‘9’]

+56/67 -> [’+56’, ‘/’, ‘67’]

99/3-5314+55 -> [‘99’, ‘/’, ‘3’, ‘-’, ‘531’, '’, ‘4’, ‘+’, ‘55’]

+5/2+6-454 -> [’+5’, ‘/’, ‘2’, ‘+’, ‘6’, ‘-’, ‘45’, '’, ‘4’]


-----------------算式拆分完成--------------------


  当然,拆分算式必须是“合法”四则混合运算,不带括号。在拆分前要有validate_expression函数对算式进行校验。



回页目录


2、匹配表达式解析


正则表达式:
r'(?:^[+-]?\d+)|(?:[*/+-])|(?:\d+)'


下面是对您提供的正则表达式的解释:

  • (?:^[+-]?\d+): 匹配字符串开头的一个可选的正号或负号,后跟一个或多个数字。这是非捕获组,所以匹配的内容不会被捕获。
  • (?:[*/+-]): 匹配乘号、除号、加号或减号。
  • (?:\d+): 匹配一个或多个数字。

  使用这个正则表达式,可以通过 re.findall 方法找到所有匹配的部分。


  这个正则表达式使用非捕获组和“|”运算符成功实现了算式的拆分。该正则表达式利用了非捕获组 (?: ... ) 来组合模式,而“|”运算符则用于匹配多个模式中的任何一个。这个正则表达式能够匹配算式中的数字和运算符。



回页目录


3、所含知识点


通过观察这个正则表达式和前面的拆分示例,我们可以学到以下几点:

  1. 非捕获组 (?: ... ) 允许我们组合正则表达式的一部分而不捕获该部分的匹配内容。这对于组织复杂的正则表达式非常有用,尤其是在不需要捕获匹配内容时。

  2. 使用“|”运算符可以指定多个备选模式,正则表达式引擎会尝试匹配其中的任何一个。

  3. 在正则表达式中,特殊字符(如“-”减号)需要在它们前面加上反斜杠 \ 来转义。

  这个正则表达式简洁且有效,是处理此类问题的另一种好方法。



回页目录


4、ai学伴的肯定和鼓励


  • ai科普|
    在这里插入图片描述

  • ai对话截屏
    在这里插入图片描述



回页目录


5、总结


  在ai大行其道的当下,用ai助力生活和学习,是有必要修炼的小技俩。💪💪

  本笔记所记的正则表达式匹配用法,就是在ai分别使用的引领下,我灵感“融汇贯通”的得到了想要的“灵宝”,ai倒是不会了。😋

  • 有图为证
    在这里插入图片描述



回页首


上一篇:  正则非捕获组(r'?:xxxx)(与ai学伴聊天对掐,学到了re非捕获组匹配)
下一篇: 



我的HOT博:

  本次共计收集 311 篇博文笔记信息,总阅读量43.82w。数据于2024年03月22日 00:50:22完成采集,用时6分2.71秒。阅读量不小于6.00k的有 7 7 7篇。

  • 001
    标题:让QQ群昵称色变的神奇代码
    (浏览阅读 5.9w )
    地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    点赞:25 收藏:86 评论:17
    摘要:让QQ昵称色变的神奇代码。
    首发:2022-01-18 19:15:08
    最后编辑:2022-01-20 07:56:47

  • 002
    标题:Python列表(list)反序(降序)的7种实现方式
    (浏览阅读 1.1w )
    地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    点赞:8 收藏:35 评论:8
    摘要:Python列表(list)反序(降序)的实现方式:原址反序,list.reverse()、list.sort();遍历,全数组遍历、1/2数组遍历;新生成列表,resersed()、sorted()、负步长切片[::-1]。
    首发:2022-12-11 23:54:15
    最后编辑:2023-03-20 18:13:55

  • 003
    标题:pandas 数据类型之 DataFrame
    (浏览阅读 9.7k )
    地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    点赞:7 收藏:36 
    摘要:pandas 数据类型之 DataFrame_panda dataframe。
    首发:2022-05-01 13:20:17
    最后编辑:2022-05-08 08:46:13

  • 004
    标题:个人信息提取(字符串)
    (浏览阅读 8.2k )
    地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    点赞:2 收藏:15 
    摘要:个人信息提取(字符串)_个人信息提取python。
    首发:2022-04-18 11:07:12
    最后编辑:2022-04-20 13:17:54

  • 005
    标题:Python字符串居中显示
    (浏览阅读 7.6k )
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    评论:1

  • 006
    标题:罗马数字转换器|罗马数字生成器
    (浏览阅读 7.5k )
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    摘要:罗马数字转换器|生成器。
    首发:2022-01-19 23:26:42
    最后编辑:2022-01-21 18:37:46

  • 007
    标题:回车符、换行符和回车换行符
    (浏览阅读 6.0k )
    地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    点赞:2 收藏:3 
    摘要:回车符、换行符和回车换行符_命令行回车符。
    首发:2022-02-24 13:10:02
    最后编辑:2022-02-25 20:07:40


推荐条件 阅读量突破6.00k
(更多热博,请点击蓝色文字跳转翻阅)

  • 截屏图片
    在这里插入图片描述
      (此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)



回页首


老齐漫画头像

精品文章:

  • 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


◆ Python 入门指南【Python 3.6.3】


好文力荐:

  • 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯
  • 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代码编写规范
  • Python的docstring规范(说明文档的规范写法)

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

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

相关文章

《GC8545:智能马桶电路板的卓越替代之选》

在智能马桶领域,电路板的性能至关重要。随着技术的不断发展,寻找更优质、更高效的芯片来替代传统型号已成为行业的趋势。而 GC8545 芯片以其卓越的性能和广泛的适用性,正逐渐成为替代其他型号的理想选择。其中最常用的就是替代的型号LV8548和…

【machine learning-13-线性回归的向量化】

向量化 向量化简洁并行计算 向量化 线性回归的向量化表示如下,其中w 和 x 都分别加了箭头表示这是个向量,后续不加也可以表示为向量,w和x点乘加上b,就构成了多元线性回归的表达方式,如下: 那么究竟为什么…

产品管理-互联网产品(2):需求管理

一、概述 需求问题解决方案,产品经理是解决问题专家。提出求产品经理需要考虑如下四点: 1、客户的目的是什么?2、这条需求是否隐含了解决方案?3、客户的潜在目标是什么?4、如何确定需求已得到满足? 二、…

SD NAND参考设计和使用提示

电路设计 参考电路: R1~R5 (10K-100 kΩ)是上拉电阻,当SD NAND处于高阻抗模式时,保护CMD和DAT线免受总线浮动。 即使主机使用SD NAND SD模式下的1位模式,主机也应通过上拉电阻上拉所有的DATO-3线。 R6(RCLK&#…

[数据结构] 二叉树题目 (二)

目录 一. 另一颗树的子树 1.1 题目 1.2 示例 1.3 分析 1.4 解决 二. 平衡二叉树 2.1 题目 2.2 示例 2.3 分析 2.4 解决 三. 二叉树的遍历和创建 3.1 题目 3.2 示例 3.3 解决 一. 另一颗树的子树572. 另一棵树的子树 - 力扣(LeetCode) 1.1…

Linux开源网络:网络虚拟化

Linux 网络虚拟化的主要技术是网络命名空间以及各类虚拟网络设备。例如要介绍的 veth、Linux bridge、tun/tap 等,这些虚拟网络设备模拟了物理设备的功能,但完全在内核层面由代码实现。容器网络正是基于这些虚拟网络设备,模拟现实世界中的物理…

《自控原理》系统传递函数的零极点模型、分式模型、系统增益

目录 传递函数模型与零极点 系统增益 《自动控制原理》胡寿松,第六版 传递函数模型与零极点 (3-61)所示的是系统的传递函数的分式形式。他一定可以化成(3-62)形式。 根据3-62的分母可以直接看出系统的特征根,不过要注意&#…

前端框架对比与选择:全面解析前端开发的得力助手

一、引言 在当今快速发展的互联网时代,前端开发扮演着至关重要的角色。前端框架的出现极大地提高了开发效率、提升了用户体验。然而,市场上存在着众多的前端框架,如React、Vue、Angular等,对于开发者来说,如何在这些框…

使用 Paramiko 实现 SSH 远程连接和命令执行

使用 Paramiko 实现 SSH 远程连接和命令执行 每当灶火燃起,香气弥漫,熟悉的味道植入记忆深处,家,才获得完整的意义。万户千家,味道迥异,但幸福的滋味,却何其相同。 ——《风味人间》 在现代网络…

Linux集群部署RabbitMQ

目录 一、准备三台虚拟机,配置相同 1、所有主机都需要hosts文件解析 2、所有主机安装erLang和rabbitmq 3、修改配置文件 4、导入rabbitmq 的管理界面 5、查看节点状态 6、设置erlang运行节点 7、rabitmq2和rabbitmq3重启服务 8、查看各个节点状态 二、添加…

计算机视觉|机器学习中图片特征向量的提取方式:开启图像世界的钥匙

文章目录 什么是特征向量?常见的图片特征向量提取方法1. **手工设计的特征**SIFT(尺度不变特征变换)HOG(方向梯度直方图) 2. **卷积神经网络 (CNN)**3. **预训练模型**4. **自监督学习** 结语 今天我们将一起深入探讨机…

powerbi计算销售额同比增长率

在上一篇我们介绍了销售额累计同比增长率的计算方法,本篇将为大家接受销售额同比增长率的计算,建议大家结合上篇阅读,可以比较一下不同之处,注意区分,上一篇链接如下: powerbi计算销售额累计同比增长率——…

基于Hive和Hadoop的共享单车分析系统

本项目是一个基于大数据技术的共享单车分析系统,旨在为用户提供全面的单车使用信息和深入的出行行为分析。系统采用 Hadoop 平台进行大规模数据存储和处理,利用 MapReduce 进行数据分析和处理,通过 Sqoop 实现数据的导入导出,以 S…

C语言VS实用调试技巧

文章目录 一、什么是bug?二、什么是调试?三、Debug和Release四、VS调试快捷键4.1环境准备4.2调试快捷键 五、监视和内存观察5.1监视5.2内存 六、调试举例七、编程常见错误归类7.1编译型错误7.2链接型错误7.3运行时错误 一、什么是bug? 🍎bug本意是 “…

外国名人面孔识别系统源码分享

外国名人面孔识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

【安当产品应用案例100集】018-Vmware Horizon如何通过安当ASP身份认证系统增强登录安全性

启用Radius认证是提高VMware Horizon环境安全性的有效方法,特别是在需要满足复杂安全要求的场景中。 启用Radius认证对于VMware Horizon具有以下几个关键优势: 增强安全性:Radius认证支持多种认证方法,包括PAP、CHAP、MS-CHAPv1…

Funsound 跨语言语音翻译

对任意语言的音视频识别得到目标语言文字结果,支持100种语言互译,视频支持在线添加字幕 体验地址 https://www.funsound.cn/st https://modelscope.cn/studios/QuadraV/Funsound_Multiligual_translator https://huggingface.co/spaces/QuadraV/Funsou…

基于nodejs的网球/篮球/体育场地管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…

【芋道源码】gitee很火的开源项目pig——后台管理快速开发框架使用笔记(微服务版之本地开发环境篇)

后台管理快速开发框架使用笔记(微服务版之本地开发环境篇) 后台管理快速开发框架使用笔记(微服务版之本地开发环境篇) 后台管理快速开发框架使用笔记(微服务版之本地开发环境篇)前言一、如何获取项目&#…

HAL+M4学习记录_2

一、Boot配置 内存地址是固定的,代码从0x0000 0000开始,而数据从0x2000 0000开始,F4支持三种不同的boot模式 复位芯片时,在SYSCLK的第4个上升沿BOOT引脚值被锁存,STM32F407通过此时BOOT[1:0]引脚值选择Boot模式 BOOT1…