当前位置:首页 > 技术分析 > 正文内容

*,+,?,{n} 等regexp正则函数核心量词符,进阶必掌握!

大家好,今天我们来分几篇文章讲讲REGEXP正则表达式函数中的正则表达式字符,因为只有掌握了这些字符之后,我们才能结合具体实际需求,编写REGEXP函数的第二参数,将各类符号进行连接组合使用,实现对复杂文本进行匹配、提取和替换的目的。


REGEXP函数是基于正则表达式,对复杂文本进行匹配、提取和替换的函数。


基本语法结构

REGEXP(原始字符串,正则表达式,[匹配模式],[替换内容])


匹配模式是可选项,0或忽略表示提取,1表示判断是否包含,2表示替换。

替换内容是可选项,仅在匹配模式为2时有效,用来替换匹配的内容。


DeepSeek给到我们的常用的正则表达式核心符号大概分为六大类


1.基础元字符



2.量词符



3.定位符



4.字符集合



5.分组与引用



6.特殊符号




今天我们主要讲讲第二大类量词符,结合几个具体的小例子,并运用REGEXP函数代入,感受一下量词符的含义与作用。



*(星号):匹配前一个元素0次或多次


星号表示前面的元素可以出现零次或多次。也就是说星号前面的元素可以完全不存在,也可以重复多次。


比如我们输入函数

=REGEXP(B2,"哈*")


返回:

{"哈","","","","哈哈",""}


"哈"可以出现零次或多次,所以会匹配到"哈嘻呵嘿哈哈"中的所有"哈",同时还会匹配到不存在“哈”时的空字符串。



在正则表达式中,星号“*”匹配出现零次的情况在使用中具有一定的意义


当你想要匹配一个元素,但这个元素可能完全不存在时,允许零次匹配提供了灵活性。


比如我们输入函数

=REGEXP(B3,"哈")


匹配B3单元格"嘿呵"中的元素“哈”,但是B3单元格中不存在“哈”,则会返回一个错误值。


但是如果我们用正则表达式“哈*”:

=REGEXP(B3,"哈"*)


即允许星号前面元素“哈”出现零次,即最终会返回一个空值,避免了错误值的存在。



加号“+”表示前面的元素至少出现1次,也可以是多次。也就是说加号“+”前面的元素至少要出现1次,不能完全没有


比如我们输入函数

=REGEXP(B2,"哈+")


返回:

{"哈哈","哈哈"}


会将加号“+”前面的元素“哈”,出现1次或多次的记录提取出来。



?(问号)会匹配前一个元素0次或1次


比如我们输入函数

=REGEXP(B2,"哈?")


返回:

{"哈","哈","","","哈","哈",""}


"哈"可以出现零次或一次,所以会匹配到"哈哈嘻嘻哈哈"中的所有单个的"哈",同时还会匹配到不存在“哈”时的空字符串。



{n}:精确匹配n次


比如我们输入函数

=REGEXP(B2,"1{3}",2,"W")


我们会将B2单元格"a12211131111"中所有连续3次出现的1,即"111",替换为"W",替换后的数据最终变为"a122W3W1"。



{n,}:至少匹配n次


比如我们输入函数

=REGEXP(B2,"1{3,}",2,"W")


我们会将B2单元格"a12211131111"中所有至少连续3次出现的1,即"111"和"1111",替换为"W",替换后的数据最终变为"a122W3W"。



{n,m}:匹配n到m次


比如我们输入函数

=REGEXP(B2,"1{1,4}",2,"W")


我们会将B2单元格"a12211131111"中连续1次出现的1到连续4次出现的1,即"1"和"111"和"1111",替换为"W",替换后的数据最终变为"aW22W3W"。




量词符在职场应用中的案例


案例1:验证11位手机号。验证是否为常规的11位手机号(仅数字)。如果是正常的手机号返回真值,否则返回假值。


我们可以这样输入函数

=REGEXP(B2,"^1[3-9]\d{9}#34;,1)


^1[3-9]:代表第1位1,第2位3~9

\d{9}:代表后续9位数字(总长度11位)

$:代表以以上11位数字结束的字符串。



案例2:提取金额(整数或小数)从文本中提取金额,例如"¥123.45"提取到的结果为"123.45"。


我们可以这样输入函数

=REGEXP(B2,"\d+\.?\d*")


\d+:至少1位整数部分

\.?:可选小数点

\d*:可选小数部分


扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/4578.html

标签: 正则 ?=
分享给朋友:

“*,+,?,{n} 等regexp正则函数核心量词符,进阶必掌握!” 的相关文章

供热收费管理系统一户多标准版

供热收费管理系统一户多标准版headerfooter《供热收费管理系统一户对标准版》是一款针对冬季供暖收费的管理软件,针对用户相同地址,存在不同的收费方式。同样为供热公司的规范收费、加强管理、提高服务档次必备的管理系统。 本系统包括:基础信息、收费管理等二个大模块。主要功能:1.基础信息(供热区设置...

vue组件间的九种通信方式

前言Vue组件实例间的作用域是相互独立的,而通常一个页面是由很多个组件构成,这些组件可能又嵌套了组件,形成了一个关系网图,它们的关系可能是像下图中一样,大致分为两种使用场景,父子组件间通信和非父子组件间通信,父子组件间通信又分为直接父子关系和间接父子关系。vue提供了多种通信方法,针对不同的通信需求...

快速上手React

web前端三大主流框架1、Angular大家眼里比较牛的框架,甚至有人说三大框架中只有它能称得上一个完整的框架,因为它包含的东西比较完善,包含模板,数据双向绑定,路由,模块化,服务,过滤器,依赖注入等所有功能。对于刚开始学习使用框架的小伙伴们,可以推荐这个框架,学会之后简直能颠覆之前你对前端开发的认...

「干货」通俗易懂的Deno 入门教程

作者: semlinker转发链接:https://mp.weixin.qq.com/s/2eqRTsf_z7Bcs6dziXe73Q一、Deno 简介Deno 是一个 JavaScript/TypeScript 的运行时,默认使用安全环境执行代码,有着卓越的开发体验。Deno 含有以下功能亮点:默...

Git 分支管理策略与工作流程

(预警:因为详细,所以行文有些长,新手边看边操作效果出乎你的预料)团队开发中,遵循一个合理、清晰的Git使用流程,是非常重要的。否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。看完这篇文章后,涉及GIT的工作中就会减少因为规范问题导致工作出错,当然如果你现在暂时还未有合...

GitLab-合并请求

描述合并请求可用于在您对项目进行的其他人员之间交换代码,并轻松与他们讨论更改。合并请求的步骤步骤1-在创建新的合并请求之前,GitLab中应该有一个创建的分支。您可以参考本章来创建分支-步骤2-登录到您的GitLab帐户,然后转到“ 项目”部分下的项目 -步骤3-单击“ 合并请求”选项卡,然后单击“...