WPS正则函数升级了,功能更加强大!
KVP函数专家、创作者俱乐部成员
2024年4月WPS正式推出了REGEXP正则函数,这一功能迅速在表格领域引起了广泛关注。随着用户们对REGEXP函数的学习和使用,其强大的功能逐渐得到了认可。然而,在使用过程中,用户们也遇到了一些问题。为了提升用户体验,本次更新不仅修复了已知的问题,还在原有功能的基础上增添了新的功能,使得REGEXP函数更加完善。接下来,我们将深入了解这些改进和新增的功能。
升级后的REGEXP函数语法如下所示。
1、第1个参数支持数组参数
正则函数的时候,第1个参数是不支持数组的,在使用REGEXP函数时只能输入公式后向指定方向填充,或使用MAP、SCAM、REDUCE等函数才能实现溢出效果,实际使用有些不便,本次升级后,第1个参数支持数组参数,在第3个参数匹配类型值为1(判断)、2(替换)模式下,在一个单元格输入公式后即可实际溢出。
示例1、判断手机号格式是否正确
=REGEXP(A2:A8,"^1[3-9]\d{9}$",1)
示例2、删除中括号中的汉字后计算表达式
=EVALUATE(REGEXP(A2:A8,"\[[一-龟]+\]",2))
示例3、提取姓名
=REGEXP(A2:A8,"[一-龟]+")
2、第1个、第2个参数同时使用数组
示例4、提取姓名、拼音和数字
=REGEXP(A2:A8,{"[一-龟]+","[A-z]+","\d+"})
当第1个参数和第2个参数同时使用数组时,函数将两个参数的数组进行数组运算后匹配,使用将两个参数的数组使用&运算符拼接可以直观的查看数组运算后的结果,如下图所示。
=A11:A17&" - "&{"[一-龟]+","[A-z]+","\d+"}
示例5、提取付款方式对应的金额
=IFNA(REGEXP(A2:A10,B1:E1&"\K\d+"),"-")
3、第3个参数新增加匹配类型
示例6、提取所有姓名
当第1个参数为数组时,第3个参数为0或省略,在提取模式时,REGEXP函数将返回数组中每个值匹配到结果的首值,如下图所示。
=REGEXP(A2:A8,"[一-龟]+")
此次升级第3个参数增加一个匹配模式3(完整提取),当设置此模式时,REGEXP函数将返回数组中每个值匹配到的完整结果(一个三维数组)需要使用REDUCE、MAP等函数循环将完整结果显示出来,公式如下图所示。
=REDUCE(,REGEXP(A2:A8,"[一-龟]+",3),VSTACK)
因每行匹配结果返回的结果数量不同,使用VSTACK函数拼接后,返回结果少的行数将返回错误值#N/A补齐数组,使用IFNA函数将#N/A显示成空文本即可,公式如下图所示。
=IFNA(REDUCE(,REGEXP(A2:A8,"[一-龟]+",3),VSTACK),"")
需要将每个值匹配到的姓名返回到一个单元格中,可以使用MAP函数循环,ARRAYTOTEXT函数拼接,公式如下图所示。
=MAP(REGEXP(A2:A8,"[一-龟]+",3),ARRAYTOTEXT)
如果需要其他分隔符号,可以使用SUBSTITUTE函数替换,或TEXTJOIN函数拼接,如下图所示。
=SUBSTITUTE(MAP(REGEXP(A2:A8,"[一-龟]+",3),ARRAYTOTEXT),", ","、")
=LET(fx,LAMBDA(x,TEXTJOIN("、",,x)),MAP(REGEXP(A2:A8,"[一-龟]+",3),fx))
如果需要将提取到姓名显示成一行,使用REDUCE函数循环后使用TOCOL函数转换即可,公式如下图所示。
=TOCOL(REDUCE(,REGEXP(A2:A8,"[一-龟]+",3),VSTACK),3)
在以上几个示例中,在使用循环函数拼接结果时使用了语法糖简写,当数组中的每个都能匹配到结果时,这样写是没有问题的,如果数组中的值出现没有匹配结果时,REGEXP函数会返回错误值#N/A,导致VSTACK函数无法拼接,可以使用LAMBDA函数,然后使用IFNA函数将错误值转换成空文本,公式如下图所示。
=IFNA(REDUCE(,REGEXP(A2:A8,"[一-龟]+",3),LAMBDA(x,y,VSTACK(x,IFNA(y,"")))),"")
如果需要返回一列结果,公式如下图所示。
=TOCOL(REDUCE(,REGEXP(A2:A8,"[一-龟]+",3),LAMBDA(x,y,IF(ISNA(y),x,VSTACK(x,y)))),3)
示例7、提取付款方式对应的金额(一个单元格内有重复的付款方式)
=MAP(REGEXP(A2:A10,B1:E1&"\K\d+",3),LAMBDA(x,IFNA(SUM(--x),"-")))
7月版本17813已开始灰度更新,已经更新到此版本的小伙伴可以开始使用新REGEXP函数了。
还没有更新到17813版本的小伙伴如果想提前体验新REGEXP函数,可以到社区下载64位内测版,64位内测版本17726也支持新REGEXP函数。
需要注意的是,安装不同位数的WPS时,无法覆盖安装,需要先卸载已经安装的WPS(安装64位版本需要先卸载32位版本的WPS,安装回32位时也要先卸载64位版本的WPS)
- - - END - - -