云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

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

jxf315 2025-03-13 16:42:40 教程文章 44 ℃

大家好,今天我们来分几篇文章讲讲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}$",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*:可选小数部分


最近发表
标签列表