新版REGEXP函数教程
@金山办公
函数介绍
=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错误
创作者俱乐部成员