Excel使用正则表达式
- Excel
- 4天前
- 4热度
- 0评论
Excel也可以用正则表达式了~!在 Excel 中使用正则表达式(Regex)可以极大地增强数据处理能力
正则表达式是一种强大的文本模式匹配工具,用于搜索、替换和验证字符串。本来Excel有许多的文本处理函数,比如:
SEARCH
/FIND
- 查找文本位置
MID
/LEFT
/RIGHT
- 提取子字符串
SUBSTITUTE
- 替换文本
IF
/IFERROR
- 条件判断
但是仅仅有这些,在一些场景下还是不太方便,而如果要有正则表达式,就会提效很多:
可喜的是在新版的Excel中,有了正则表达式函数,我们来看一下其中的代表:
REGEXEXTRACT 函数
REGEXEXTRACT 函数允许基于提供的正则表达式从字符串中提取文本。 可以从第一个匹配中提取第一个匹配项、所有匹配项或捕获组。
语法
REGEXEXTRACT 函数提取所提供文本中与模式匹配的字符串。
REGEXEXTRACT 函数的语法为:
REGEXEXTRACT (文本、模式、[return_mode]、[case_sensitivity]
其中的参数说明如下:
论点 | 描述 |
---|---|
text(必需) | 文本或对包含要从中提取字符串的文本的单元格的引用。 |
模式(必需) | 正则表达式 (“regex”) ,用于描述要提取的文本模式。 |
return_mode | 一个数字,指定要提取的字符串。 默认情况下,返回模式为 0。 可能的值为:0: 返回与模式匹配的第一个字符串1: 以数组形式返回与模式匹配的所有字符串2: 以数组的形式返回第一个匹配项中的捕获组注意:捕获组是正则表达式模式的一部分,用括号“ (...) ”括起来。 它们允许单独返回单个匹配的单独部分。 |
case_sensitivity | 确定匹配项是否区分大小写。 默认情况下,匹配项区分大小写。 输入以下选项之一:0: 区分大小写1: 不区分大小写 |
让我们通过一个案例来了解Excel的正则表达式功能REGEXEXTRACT
【案例】假设你是一个水果贩子,你记记得有点乱,每一笔交易像下表中的“明细”一样,是“品类+金额”形式的。现在我们需要计算每一笔交易总金额是多少, 涵盖什么水果。

当然,我们也可以用很复杂的文本处理函数逻辑来做,但是如果用正则表达式REGEXEXTRACT 就会非常简单:
我们先来看求和部分:
我们在C2单元格中输入=SUM(INT(REGEXEXTRACT(B2,"\d+",1)))
两个外层函数不多解释,SUM()是求和,INT()是将正则表达式抽取出来的部分转化为可以计算的数值形式
我们来看看里面的正则表达式抽取函数REGEXEXTRACT(B2,"\d+",1),第一个参数B2代表要处理的文本是B2单元格,第二个参数“\d+”代表要抽取对应文本中带阿拉伯数字样式的字符串,第三个参数1代表“以数组形式返回与模式匹配的所有字符串”
写出函数之后,他就计算出来B2单元格中,所有的数字之和。

我们在点击单元格下拉,就获得了每一笔交易的交易金额

我们在来看第二个字段“有哪些水果”如何填充。我们在D2单元格输入如下公式:
=REGEXEXTRACT(B2,"[一-龟]+",1)
中间公式中[一-龟]代表所有的汉字(在汉字字符集中,第一个是“一”,最后一个是“龟”,“一”-“龟”就是所有的汉字)
其他参数上面已经讲过了,我们通过这个公式,就将汉字格式的水果整理出来了

最后,常用的一些正则表达式模式参考如下:
用途 | 正则表达式 | 说明 |
电子邮件 | ^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$ | 匹配有效电子邮件格式 |
手机号码 | ^1[3-9]\d{9}$ | 匹配中国大陆手机号 |
身份证号 | `^[1-9]\d{5}(181920)\d{2}(0[1-9]1[0-2])(0[1-9][12]\d3[01])\d{3}[\dXx]$` | 匹配18位身份证号 |
提取数字 | \d+ | 匹配一个或多个数字 |
提取中文 | [一~龟]+ | 匹配中文字符 |