正则表达式真的很强大,可惜你不会写

LangChain Agent底层循环揭秘:用不可用工具看透推理-行动-反馈机制 在大模型应用开发中,Agent框架让模型不再局限于静态回答,而是能自主调用外部工具、读取反馈并动态调整下一步动作。其核心机制是ReAct循环,即“推理→行动→反馈→再推理”的迭代过程,这构成了LangChain等框架中AgentExecutor的底层执行逻辑。理解这一循环对开发稳定、可控的AI助手至关重要,尤其是在工具调用失败、反馈异常或循环不收敛等场景下。例如,在服务器监控任务中,当CPU查询接口返回错误时,Agent会依据反馈信息反复尝试或最终给出合理兜底答案。本文通过一个自制造的“不可用工具”演示,配 阅读详情

本文旨在用最通俗的语言讲述最枯燥的基本知识

文章提纲:

  • 元字符
  • 重复限定符
  • 分组
  • 转义
  • 条件或
  • 区间

正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。

但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给你修,在你学会正则之前,你只能看着那些正则大师们,写了一串外星文似的字符串,替代了你用一大篇幅的if else代码来做一些内容校验。

既然喜欢,那就动手学呗,可当你百度出一一堆相关资料时,你发现无一不例外的枯燥至极,难以学习(实话说,当年不理君也是这样的心态)。

下面,不理君尝试用一种比较通俗点的方式讲一下正则,让你能在读完之后,自己写出一些简单的正则,再不济,能看到别人写的正则,那也不错了。

1.元字符

万物皆有源,正则也是如此,元字符是构造正则表达式的一种基本元素。

我们先来记几个常用的元字符:

有了元字符之后,我们就可以利用这些元字符来写一些简单的正则表达式了,

比如:

  1. 匹配有abc开头的字符串:
\babc或者^abc
  1. 匹配8位数字的QQ号码:
^\d\d\d\d\d\d\d\d$
  1. 匹配1开头11位数字的手机号码:
^1\d\d\d\d\d\d\d\d\d\d$

2. 重复限定符

有了元字符就可以写不少的正则表达式了,但细心的你们可能会发现:别人写的正则简洁明了,而不理君写的正则一堆乱七八糟而且重复的元字符组成的。正则没提供办法处理这些重复的元字符吗?

答案是有的!

为了处理这些重复问题,正则表达式中一些重复限定符,把重复部分用合适的限定符替代,下面我们来看一些限定符:

有了这些限定符之后,我们就可以对之前的正则表达式进行改造了,比如:

  1. 匹配8位数字的QQ号码:
^\d{8}$
  1. 匹配1开头11位数字的手机号码:
^1\d{10}$
  1. 匹配银行卡号是14~18位的数字:
^\d{14,18}$
  1. 匹配以a开头的,0个或多个b结尾的字符串
^ab*$

3. 分组

从上面的例子(4)中看到,*限定符是作用在与他左边最近的一个字符,那么问题来了,如果我想要ab同时被*限定那怎么办呢?

正则表达式中用小括号()来做分组,也就是括号中的内容作为一个整体。

因此当我们要匹配多个ab时,我们可以这样

如:匹配字符串中包含0到多个ab开头:

^(ab)*

4. 转义

我们看到正则表达式用小括号来做分组,那么问题来了:

如果要匹配的字符串中本身就包含小括号,那是不是冲突?应该怎么办?

针对这种情况,正则提供了转义的方式,也就是要把这些元字符、限定符或者关键字转义成普通的字符,做法很简答,就是在要转义的字符前面加个斜杠,也就是\即可。

如:要匹配以(ab)开头:

1^(\(ab\))*

5. 条件或

回到我们刚才的手机号匹配,我们都知道:国内号码都来自三大网,它们都有属于自己的号段,比如联通有
130/131/132/155/156/185/186/145/176等号段,假如让我们匹配一个联通的号码,那按照我们目前所学到的正则,应该无从下手的,因为这里包含了一些并列的条件,也就是“或”,那么在正则中是如何表示“或”的呢?

正则用符号 | 来表示或,也叫做分支条件,当满足正则里的分支条件的任何一种条件时,都会当成是匹配成功。

那么我们就可以用或条件来处理这个问题

1^(130|131|132|155|156|185|186|145|176)\d{8}$

6. 区间

看到上面的例子,是不是看到有什么规律?是不是还有一种想要简化的冲动?

实际是有的

正则提供一个元字符中括号 [] 来表示区间条件。

  • 限定0到9 可以写成[0-9]
  • 限定A-Z 写成[A-Z]
  • 限定某些数字 [165]

那上面的正则我们还改成这样:

^((13[0-2])|(15[56])|(18[5-6])|145|176)\d{8}$

好了,正则表达式的基本用法就讲到这里了,其实它还有非常多的知识点以及元字符,我们在此只列举了部分元字符和语法来讲,旨在给那些不懂正则或者想学正则但有看不下去文档的人做一个快速入门级的教程,看完本教程,即使你不能写出高大上的正则,至少也能写一些简单的正则或者看得懂别人写的正则了,如果需要进阶学习,那就靠各位好好修炼啦

PaddleOCR实战:DBnet++与DBnet模型训练全流程解析 本文详细解析了基于PaddleOCR框架的DBnet与DBnet++文字检测模型的完整训练流程。从环境配置、数据集准备、配置文件解读,到模型训练、评估调参及最终推理部署,提供了实战指南。重点对比了DBnet++与DBnet在精度、速度及适用场景上的差异,帮助开发者高效构建定制化的OCR检测模型。 阅读详情

相关推荐

华为FusionCharge 720kW液冷直流快充桩主电流全路径深度详解

本文档详细介绍了华为FusionCharge 720kW液冷分体式直流充电系统的主电流路径全链路解析,适用于配套DS720-720LCNA1充电主机及DT600L1-CNA1液冷终端、DT250N2-CNA1自然冷终端的运维工作。内容涵盖从电网交流输入到电动汽车充电的全过程,重点解析交流门、整流正门、主控正门等五大柜门区域的核心元器件分布及功能,包括额定参数、安全规范、故障排查等关键运维知识。操作人员需持有高压电工证并通过专项培训,作业时必须严格遵守断电验电、穿戴PPE防护装备等安全红线。文档通过16个关键

2401_84939870的博客 750

正则表达式的真正威力(0)

原文 我在浏览StackOverflow上关于PHP的问题时经常看到有人提问如何使用正则表达式解析HTML。对于该问题的回答通常是这样的: 你不能使用正则表达式解析HTML,因为HTML不是正则的。使用XML解析器吧。 这种回答——在该问题的语境下——是有误导性的甚至是完全错误的。接下来我会展示现代正则表达式是多么强大。 “正则”到底是什么意思 在形式语言理论中,说一个东西是“正则(regul...

coderock 503

深入解析SerDes系统中的时钟数据恢复电路(CDR)——基于Cadence的PLL/Bang-Bang/PS-PI架构实现与仿真

本文深入解析SerDes系统中的时钟数据恢复电路(CDR),重点探讨基于Cadence平台的PLL、Bang-Bang和PS-PI三种架构的实现与仿真。通过详细的技术对比和工程实践案例,揭示CDR在高速串行通信中的关键作用,并提供TSMC 28nm工艺下的优化策略与故障排查经验,助力工程师应对10Gbps以上SerDes设计挑战。

weixin_29202687的博客 250

正则表达式真的很骚,可惜你不会写!!!

本文旨在用最通俗的语言讲述最枯燥的基本知识 文章提纲: 元字符 重复限定符 分组 转义 条件或 区间 正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。 但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给你修,在你学会正则之前,你只能看着...

weixin_33692284的博客 550

GEE开发之ERA5(气温、降水、压力、风速等)数据获取和分析

前言:ERA5主要提供DAILY和MONTHLY两大类别数据,其中主要包括气温、降水、压力、风速等。

等待着冬天的风的博客 3万+

解密m3u8视频合并:从猫抓插件到本地文件修改全流程

本文详细解析了m3u8视频合并的全流程,特别针对加密视频片段提供了解决方案。从使用猫抓插件捕获m3u8文件地址,到利用N_m3u8DL-CLI工具自动下载、解密并合并ts片段,手把手教你处理AES-128加密等常见问题,最终生成完整的本地MP4文件,适合需要备份或处理流媒体资源的用户。

weixin_29290947的博客 1362

强大的正则表达式

正则表达式可能在很多地方出现

geek7的专栏 1242

数仓 - 促销敏感度、评论敏感度

1. 促销敏感度 步骤1. 首先按照最后一次下单时间及有无复购情况将用户分为四大群体: 近一年有购物行为且复购的用户 -- L1 (今年复购用户) 近一年有购物行为但无复购的用户 --L2 (今年一单购用户) 最后一次下单时间在1年之前且有复购的用户 --L3 (今年无购且只有一单用户) 最后一次下单时间在1年之前但无复购的用户 -- L4 (今年无购多单用户) 步骤2. 每一类用户群再根据优惠订单占比、每单优惠金额占比的平均值、优惠金额这三个指标进行k-means聚类,分为: 非常敏感 -

weixin_41332009的博客 1899

java 正则匹配_正则表达式真的很强大,可惜你不会写

专注于Java领域优质技术,欢迎关注本文旨在用最通俗的语言讲述最枯燥的基本知识文章提纲:元字符重复限定符分组转义条件或区间正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给你修,在你学会正则之前,你只能看着那些正则大师们,写了一串外星文...

weixin_39788131的博客 213

银河麒麟v10-arm版离线安装Portainer

银河麒麟v10-arm版离线安装Portainer

q_hsolucky的博客 3051

数学建模算法案例精讲500篇-【深度强化学习】深度确定性策略梯度(DDPG)(附MATLAB和python代码实现)

它是一种学习连续动作的无模型策略算法。它结合了DPG(确定性策略梯度)和DQN(深度Q网络)的思想。它利用DQN中的经验重放和延迟更新的目标网络,并基于DPG,可以在连续的动作空间上运行。# 用于生成带有噪声的动作def __init__(self, action_space, mu=0.0, theta = 0.15, max_sigma = 0.3, min_sigma = 0.3, decay_period = 100000):#decay_period要根据迭代次数合理设置# 均值 mu。

qq_36130719的博客 325

手机号码正则_正则表达式真的很强大,可惜你不会写

专注于Java领域优质技术,欢迎关注本文旨在用最通俗的语言讲述最枯燥的基本知识文章提纲:元字符重复限定符分组转义条件或区间正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给你修,在你学会正则之前,你只能看着那些正则大师们,写了一串外星文...

weixin_39695701的博客 342

Java 实现 MP3 音频合并工具类:摆脱 FFmpeg,高效低 CPU 的纯本地方案【需求已解决】

本方案充分发挥了 Java 音频 SPI 的潜力,实现了轻量、跨平台、低 CPU 消耗的 MP3 音频合并工具类。 对于希望在服务器或桌面应用中集成音频处理功能的开发者而言,这无疑是一个可行且优雅的解决方案。

一键难忘的博客 543

正则表达式真的很骚!可惜99%程序员没写对

正则表达式真的很骚!可惜99%程序员没写对

2501_93190857的博客 333

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

正则表达式小结

参考

木南曌的博客 289

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

正则表达式

字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。所以我...

liangyingyi1006的博客 350

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

python调用perl_文本处理,用perl 还是python?

你的位置:问答吧-> Python-> 问题详情文本处理,用perl 还是python?最近搞科研,需要处理大数据量的文本文件,和一些命令操作。想用python,perl写脚本文件。由于没接触过这类语言,想问哪个最适合做这个。另外浏览了两本书,发现perl处理文本貌似强些,不过符号太诡异了。python处理文本文件不是其主...

weixin_39806288的博客 241

task02总结

爬虫第二阶段总结 通过第二阶段的学习,我会了以下知识点 首先是学习了学习xpath的有关内容,知道xpath究竟是是什么,说实话以前真心没接触过,因为以前明德爬虫顶多就用用requests,别的也没有啥,现在越学感觉水越深(内心窃喜,因为可以学更多的东西)下面对xpath做一个简单地介绍 XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置...

Candylx的博客 124

Replace Pioneer介绍

Replace Pioneer批量处理文件,正则表达式功能很强大,可惜没有中文版,他的主页是这样的:http://www.mind-pioneer.com 官网是 www.mind-pioneer.com。

wangy0225的博客 1947

最近想学习一下编译原理,做一个编程规范的检测工具

  因为公司对编程规范要求的很严格,然而很多人却都没有规范的习惯,所以很多问题还是存在于代码中。有一次机会想做一个编程规范检测的工具,可惜自己能力有限,很多东西都不会。偶然想到了编译原理,可惜我没学过。拿着同事的一本关于GCC开发工具的书,半天也没搞明白是在干什么,有点郁闷。    我对.Net比较熟悉一些,想用.Net开发一个C语言的编程规范检测工具。大概的构思了一下,感觉还是可以实现的。  首...

weixin_34150224的博客 111

Python&Perl

这是两门很有意思的语言,我也曾花费了不少时间来学习它们,可惜的是目前只是用python做过一些简单的辅助测试工具,许多精髓的地方自然没法有个很好的体验,对perl的理解可能就更加偏颇,只看不过perl的代码,而且是由于工作原因不得不和perl打交道。IMHO,最有印象的就是他们的哲学(口号)了:TIOOWTDI:There is only one way to do it.      (Pytho

skyscribe的专栏 1528

正则,原来你就在这里

正则表达式,用的最多却最不熟悉。这次项目开发,有一块解析文件,检验数据要写正则表达式。七个表达式整了半天,还挺好玩的。 抽空了解了一下正则表达式开发的工具。 1、 findstr Windows 下的命令行工具,以前还没用过,发现还蛮不错的。 findstr /? 可以查看帮助信息。 示例:findstr /N test *.* 查找当前目录下包含 test...

weixin_34025151的博客 129

Python常用辅助安全测试6个代码例子

这些代码,大部分是从别处转来的。测试的时候会比较有用。比如数据嗅探,发送请求,正则表达式处理文件,注入测试等。 实际中可以根据自己的项目,进行一定程度的扩展。代码是简洁为主。这部分代码是偏重安全测试的。 学习python已经3月了。感觉非常有用。 前些天,pm还让我写一个程序辅助他办公。 近...

chenmaoyin1482的博客 487
上一篇: 美图分布式Bitmap实践:Naix
下一篇: 什么,分布式缓存搞崩了注册中心?
JavaMonsterr
博客等级 码龄4年 211粉丝 481原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值