专业编程基础技术教程

网站首页 > 基础教程 正文

REGEXP函数,提取固定内容之后的连续数字!

ccvgpt 2025-03-30 14:40:05 基础教程 5 ℃

大家好,今天我们来解决这样的一个问题:如何提取固定内容之后的连续数字?我们用正则表达式函数REGEXP函数来看看是不是更简单一些!


REGEXP函数,提取固定内容之后的连续数字!

如下图所示

A列有一列混合内容,每个单元格是由多组“水果名称:数量”构成,并且每组“水果名称:数量”之间用分号“;”连接。每个单元格中的水果名称可能有相同的。我们想要根据C列指定的水果名称在D列及之后列得到A列区域中所有的销量数据。



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


基本语法结构

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


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

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


首先我们使用TEXTJOIN函数

=TEXTJOIN(";",,A2:A4)


用TEXTJOIN函数,用分隔符号分号";",省略第二参即忽略空值单元格后将A2:A4区域数据合并起来。


整合成一个区域有利于后面公式的运用。



然后用REGEXP函数

=REGEXP(TEXTJOIN(";",,A2:A4),"(?<="&C2&":)\d+")


以TEXTJOIN函数的数组溢出作为REGEXP函数的第一参数,即需要提取的数据源。


正则表达式 (?<=exp) 表示查找exp后面的内容。所以用(?<="&C2&":)来代表“苹果:”之后的内容。


正则表达式\d表示1个或多个数字。


正则表达式\d+表示1个或多个连续的数字。


连在一起(?<="&C2&":)\d+,表示“苹果:”之后的连续数字。


所以以此作为REGEXP函数的第二参数,提取出合并后区域内的“苹果:”之后的连续数字销量。



由于REGEXP函数返回的数字是文本格式,SUM求和不能得到计算结果

=REGEXP(TEXTJOIN(";",,A2:A4),"(?<="&C2&":)\d+")*1


所以在REGEXP函数的基础之上乘以数字1,即可将文本型数值转换为真正的数值。


最近发表
标签列表