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

与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.xdnf.cn/news/1548852.html

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

相关文章

云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展

本文根据2024云栖大会实录整理而成,演讲信息如下: 演讲人: 王 峰 | 阿里云智能集团研究员、开源大数据平台负责人 李 钰|阿里云智能集团资深技术专家 范 振|阿里云智能集团高级技术专家 李劲松|阿里云…

Flume入门到实践--Flume的安装与基础概念与安装实战

在当今大数据时代,有效管理和处理海量日志数据对于企业获取洞察和保持运营效率至关重要。为此目的设计的强有力工具之一是 Apache Flume。本文将带您探索Flume,了解其功能、安装方法以及一些实际用例,以展示其在处理日志数据方面的有效性。 …

逻辑回归(中):数学公式学习笔记 LaTeX 版

背景 闲来无事翻了一下之前买的一个机器学习课程及之前记录的网络笔记,发现遇到公式都是截图,甚至是在纸上用笔推导的。重新整理一遍之前逻辑回归函数的学习笔记,主要是为了玩一下 LaTex 语法,写公式挺有意思的。 整理之前三篇笔…

机器学习-SVM

线性感知机分类 支持向量机 线性感知机(Perceptron) 感知机是线性二值分类器。 注意:什么是线性?线性分割面就是,就是在分割面中,任意两个的连线也在分割面中,这个分割面,就是线…

debian linux 只安装mysql client

查询系统版本 执行cat /etc/os-release 可以看到是debian11 rootservice-headquarters-hg-self-data-report-844ccf78b-6ls7t:/mysql#cat /etc/os-release PRETTY_NAME"Debian GNU/Linux 11 (bullseye)" NAME"Debian GNU/Linux" VERSION_ID"11&quo…

DOM元素导出图片与PDF:多种方案对比与实现

背景 在日常前端开发中,经常会有把页面的 DOM 元素作为 PNG 或者 PDF 下载到本地的需求。例如海报功能,简历导出功能等等。在我们自家的产品「代码小抄」中,就使用了 html2canvas 来实现代码片段导出为图片: 是不是还行&#xff…

【STM32】SPI回顾

一、定义 SPI是Motorola首先提出的全双工四线同步串行外围接口,采用主从模式(Master-Slave)架构。 二、单机与多机通信 4线SPI器件有四个信号:时钟(SPI CLK, SCLK)、主机输出从机输入(MOSI)、主机输入从机输出(MISO)、片选(CS/N…

简单理解C++在C的基础上的改变

1.C语言的一些不足 我们首先看下面用C语言实现栈 #include<stdio.h> #include<assert.h> #include<stdlib.h> typedef int StackDateType; typedef struct Stack {StackDateType* _ps;size_t _size;size_t _capacity; }Stack; void StackInit(Stack* ps) {…

Qt_网络编程

目录 1、Qt的UDP Socket 1.1 用Udp实现服务器 1.2 用Udp实现客户端 2、Qt的TCP Socket 2.1 用Tcp实现服务器 2.2 用Tcp实现客户端 3、Qt的HTTP 3.1使用Qt的HTTP 结语 前言&#xff1a; 网络协议是每个平台都必须遵守的&#xff0c;只是不同的平台所提供的网络API不…

工业缺陷检测——Windows 10本地部署AnomalyGPT工业缺陷检测大模型

0. 引言 在缺陷检测中&#xff0c;由于真实世界样本中的缺陷数据极为稀少&#xff0c;有时在几千甚至几万个样品中才会出现一个缺陷数据。因此&#xff0c;以往的模型只需在正常样本上进行训练&#xff0c;学习正常样品的数据分布。在测试时&#xff0c;需要手动指定阈值来区分…

实现语音合成的三种方法:HTML5 Web Speech 、speak-tts、百度语音合成

1. 使用HTML5 Web Speech API 1.1 使用方法 window.speechSynthesis 是HTML5 Web Speech API的一部分&#xff0c;是浏览器原生提供的文本转语音功能。它允许开发者在网页上通过JavaScript调用&#xff0c;将文本转换为语音进行播放。 https://developer.mozilla.org/zh-CN/d…

渗透测试--文件上传常用绕过方式

文件上传常用绕过方式 1.前端代码&#xff0c;限制只允许上传图片。修改png为php即可绕过前端校验。 2.后端校验Content-Type 校验文件格式 前端修改&#xff0c;抓取上传数据包&#xff0c;并且修改 Content-Type 3.服务端检测&#xff08;目录路径检测&#xff09; 对目…

LMDeploy 量化部署实践

任务 使用结合W4A16量化与kv cache量化的internlm2_5-1_8b-chat模型封装本地API并与大模型进行一次对话 复现过程 按照教材安装环境。https://github.com/InternLM/Tutorial/blob/camp3/docs/L2/LMDeploy/readme.md 使用LMDeploy部署原版的1.8b大模型&#xff0c;占用显存2…

Centos怎么执行脚本

方法一&#xff1a;切换到shell脚本所在的目录&#xff08;此时&#xff0c;称为工作目录&#xff09;执行shell脚本 cd /data/shell ./hello.sh 方法二&#xff1a;以绝对路径的方式去执行bash shell脚本 /data/shell/hello.sh 方法三&#xff1a;直接使用bash 或sh 来执行…

Kubernetes深入详解(一)

目录 第一部分 K8s概念和架构 1、k8s概述和特性 2、K8s架构组件 3、k8s核心概念 第二部分 从零搭建k8s集群 1、搭建k8s环境平台规划 2、服务器硬件配置要求 3、搭建k8s集群部署方式 (1) 基于客户端工具kubeadm 1、安装Docker 2、添加阿里云YUM软件源 3、安 装kubea…

代码随想录Day 58|拓扑排序、dijkstra算法精讲,题目:软件构建、参加科学大会

提示&#xff1a;DDU&#xff0c;供自己复习使用。欢迎大家前来讨论~ 文章目录 图论part08**拓扑排序精讲**题目&#xff1a;117. 软件构建拓扑排序的背景解题思路&#xff1a;模拟过程 **dijkstra&#xff08;朴素版&#xff09;精讲**题目&#xff1a;47. 参加科学大会解题思…

腾讯特效 SDK

腾讯云视立方腾讯特效 SDK&#xff08;Tencent Effect&#xff09;是音视频终端 SDK &#xff08;腾讯云视立方&#xff09;的子产品 SDK 之一&#xff0c;提供美颜特效功能。基于优图精准的 AI 能力和天天 P 图丰富的实时特效处理&#xff0c;为各类视频处理场景提供丰富的产品…

SpringCloud-Netflix第一代微服务快速入门

1.springCloud常用组件 Netflix Eureka 当我们的微服务过多的时候&#xff0c;管理服务的通信地址是一个非常麻烦的事情&#xff0c;Eureka就是用来管理微服务的通信地址清单的&#xff0c;有了Eureka之后我们通过服务的名字就能实现服务的调用。 Netflix Ribbon\Feign : 客…

卫星导航定位原理学习(三)

GNSS信号体制及其性能分析 GNSS信号体制直接影响卫星导航系统的性能&#xff0c;是卫星导航系统设计的重要内容。卫星导航信号体制主要包括信号频率、信号结构、导航电文3部分。其中信号结构又包括调制波形、频率带宽、扩频码码长、码速率、码结构、信号功率等内容。导航电文设…

8086介绍

内部结构 执行部件EU&#xff08;Execution Unit&#xff09; 包含运算器、通用寄存器组、EU控制单元。 只负责控制&#xff0c;不和外部总线打交道 总线接口部件BIU&#xff08;Bus Interface Unit&#xff09; 包含指令队列缓冲器、16位指令指针寄存器IP、16位段寄存器&am…