新版REGEXP函数教程

wyatt
wyatt

@金山办公

函数介绍

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

功能:根据传入参数进行提取/匹配/替换操作,返回处理结果,如果有多个处理结果则以数组形式返回

原始字符串:可以是单元格引用、字符串、数组

正则表达式:要用来匹配的正则表达式(支持PCRE2语法标准)

匹配模式:共有4个选项

0(默认):提取模式,将符合正则的内容提取出来,返回的内容如果有多个,则返回数组

  • 对于单一字符串提取,若有多个提取结果,会以数组形式返回全部提取结果

  • 对于数组参数提取,会只取每个数组元素提取结果的第一个值,返回一个与数组大小相同的结果数组

1:判断模式,判断原始字符串内是否有符合正则表达式的内容,返回TRUE/FALSE

2:替换模式,将原始字符串中的符合正则表达式的内容替换成参数4,返回替换后的字符串

3:完整提取模式,对于单一字符串提取结果和0相同,对于数组参数提取时,不会仅取提取每个结果第一个值,而是得到完整的提取结果数组,这个数组可以通过其他函数进行二次处理。

替换内容:仅当匹配模式为2的时候生效,是要替换成的内容,如果不传则默认为空内容,相当于删除符合正则表达式的内容

正则表达式常用元素

示例

(部分来自社区帖子)

提取模式:

判断模式

替换模式

完整提取模式

=REGEXP("张三zs100李四ls200",{"[一-龟]+","[a-z]+","[\d]+"})的提取结果为

张三 zs 100

当参数一改为以下矩阵

=REGEXP(A1:C4,"[一-龟]+",3)的提取结果为

看起来与=REGEXP(A1:C4,"[一-龟]+",0)的结果相同,但是实际上每个单元格并不仅是“张三”,而是{“张三”,“李四”}的数组

使用=MAP(REGEXP(A1:C4,"[一-龟]+",3),LAMBDA(x,INDEX(x,2)))函数便可以提取到“李四”

对于数组参数的支持

参数一、二均可以使用数组,在参数是单元格、单行、单列、矩阵时会有不同的计算规则

以下为例

参数二为数组,参数一为单元格

结果为参数二大小相同的数组,

结果的每个元素:对参数一执行参数二对应元素的正则表达式匹配结果

参数二为多行多列数组,参数一为多行多列数组

返回结果为长宽均为参数一二最大值的矩阵(如参数一为2*3矩阵,参数二为3*2矩阵,则结果为3*3矩阵),对于重合区域,从参数一和参数二中取相应的值计算,只取第一个结果,非重合区域,返回NA错误

参数二为一行多列数组,参数一为多行多列数组

返回结果为长宽均为参数一二最大值的矩阵,用参数二的每一列的元素,计算参数一的每一列,若参数二列数大于或小于参数一,匹配不上的列数返回NA错误

参数二维为单列数组,参数一为多行多列数组

返回结果为长宽均为参数一二最大值的矩阵,用参数二的每一行的元素,计算参数一的每一行,若参数二行数大于或小于参数一,匹配不上的行数返回NA错误

广东省
浏览 2552
21
59
分享
59 +1
27
21 +1
全部评论 27
 
小宇
学习了,不过感觉好复杂啊
· 湖南省
回复
 
panda
· 四川省
回复
 
李强
学到了! 大佬,请收下我的膝盖!
· 山西省
回复
 
admin
学习
· 北京
1
回复
 
薛定谔的北斗星
学到了
· 北京
回复
 
刘杰
学习打卡
· 内蒙古
回复
 
好运连连
11
· 山东省
回复
 
Karlie
打卡打卡
· 广东省
回复
 
HLWPCAPS
打卡
· 黑龙江省
回复
 
WPS_1650177430
1
· 北京
回复
 
Mr Chen
Mr Chen

创作者俱乐部成员

打卡
· 甘肃省
回复
 
LG
111
· 新疆
回复
 
星辰
为什么三参为3不能优化一下直接出结果,还要搭配lambda才行。
· 江西省
回复
Tam Kingsley
Tam Kingsley

创作者俱乐部成员

因为如果第一参数为多列数组时,出来的结果是一个三维数组的结果集~
· 广东省
回复
 
清华学弟任泽岩
清华学弟任泽岩

创作者俱乐部成员

收藏慢慢学
· 辽宁省
回复
 
徐秋秋
希望加速发展AI功能,很实用,谢谢!
· 四川省
1
回复
 
Yung.
挺好
· 广西
回复
 
吴俊锋
不错
· 湖北省
回复
 
幸福春
收藏慢慢学
· 山东省
回复
 
『峰格』
万物皆有罅隙,那是光透过来的地方
· 山东省
回复
 
米斯特王
米斯特王

创作者俱乐部成员

学习打卡
· 浙江省
回复