返回列表 发布新帖

[教程] Excel利用正则计算单元格(单元格中有数字和字符或者符号)数值--REGEXP函数

101 0
digger 发表于 2026-1-9 09:44:41 | 查看全部 阅读模式 来自:中国–新疆–阿克苏地区 移动

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

jpg.webp

一、函数概述

Excel 中的 REGEXP 相关函数(包括 REGEXP.MATCHREGEXP.REPLACEREGEXP.EXTRACT 等)是 Excel 365 及后续版本新增的正则表达式工具,用于高效处理文本匹配、提取、替换等场景,相比传统的 FINDSUBSTITUTE 函数更灵活强大。

二、核心函数语法及参数

1. REGEXP.MATCH:判断文本是否匹配正则表达式

语法

REGEXP.MATCH(text, pattern, [options])

参数说明

参数 必选/可选 说明
text 必选 要检测的目标文本
pattern 必选 正则表达式匹配模式
options 可选 匹配选项,数字组合:0 = 默认(区分大小写、单行模式)1 = 不区分大小写2 = 多行模式4 = 忽略空格和注释

返回值

  • 匹配成功返回 TRUE,失败返回 FALSE

2. REGEXP.EXTRACT:从文本中提取匹配正则的内容

语法

REGEXP.EXTRACT(text, pattern, [group], [options])

参数说明

参数 必选/可选 说明
text 必选 目标文本
pattern 必选 正则表达式匹配模式
group 可选 提取的分组编号,默认 0(提取整个匹配内容);分组由正则中的 () 定义
options 可选 REGEXP.MATCHoptions 参数

返回值

  • 返回匹配的文本内容,无匹配则返回空值。

3. REGEXP.REPLACE:替换文本中匹配正则的内容

语法

REGEXP.REPLACE(text, pattern, replacement, [options])

参数说明

参数 必选/可选 说明
text 必选 目标文本
pattern 必选 正则表达式匹配模式
replacement 必选 替换后的文本,可使用 $n 引用正则分组($0 代表整个匹配,$1 代表第1个分组)
options 可选 REGEXP.MATCHoptions 参数

返回值

  • 返回替换后的文本内容。

三、常用正则表达式语法补充

正则符号 说明 示例
. 匹配任意单个字符(除换行符) a.b 匹配 acbaab
* 匹配前一个字符 0 次或多次 a* 匹配 ''aaaa
+ 匹配前一个字符 1 次或多次 a+ 匹配 aaaa,不匹配 ''
? 匹配前一个字符 0 次或 1 次 a? 匹配 ''a
^ 匹配文本开头 ^abc 匹配 abc123,不匹配 xabc
$ 匹配文本结尾 abc$ 匹配 123abc,不匹配 abc123
[] 匹配括号内任意一个字符 [abc] 匹配 abc
[^] 匹配不在括号内的任意字符 [^abc] 匹配 d1x
() 定义分组,用于提取或引用 (abc)123abc 为第1个分组
\d 匹配任意数字(等价于 [0-9] \d+ 匹配 12345
\D 匹配任意非数字 \D+ 匹配 abc@#
\w 匹配字母、数字、下划线(等价于 [a-zA-Z0-9_] \w+ 匹配 user123name
\W 匹配非字母、数字、下划线 \W+ 匹配 @#$%
\s 匹配任意空白字符(空格、制表符等) \s 匹配空格、\t

四、实战案例

案例 1:使用 REGEXP.MATCH 验证手机号格式

需求:判断 A1 单元格的文本是否为 11 位手机号(以 1 开头,第二位为 3-9)。

  • 正则模式:^1[3-9]\d{9}$
  • 公式:
    =REGEXP.MATCH(A1, "^1[3-9]\d{9}$")
    
  • 测试结果:
    A1 内容 公式返回值
    13800138000 TRUE
    12345678901 FALSE
    1380013800 FALSE

案例 2:使用 REGEXP.EXTRACT 提取文本中的数字

需求:从 A2 单元格的混合文本中提取所有数字。

  • 正则模式:\d+(匹配1个及以上数字)
  • 公式:
    =REGEXP.EXTRACT(A2, "\d+")
    
  • 测试结果:
    A2 内容 公式返回值
    订单号:20250109 20250109
    价格:99.9 元 99
    无数字文本 空值

进阶:提取多个分组内容
若 A3 内容为 姓名:张三,年龄:25,需提取姓名和年龄:

  • 正则模式:姓名:(\w+),年龄:(\d+)
  • 提取姓名公式:
    =REGEXP.EXTRACT(A3, "姓名:(\w+),年龄:(\d+)", 1)
    
  • 提取年龄公式:
    =REGEXP.EXTRACT(A3, "姓名:(\w+),年龄:(\d+)", 2)
    
  • 结果:姓名返回 张三,年龄返回 25

案例 3:使用 REGEXP.REPLACE 替换文本中的敏感信息

需求:将 A4 单元格的手机号中间 4 位替换为 ****

  • 正则模式:(1[3-9]\d{2})\d{4}(\d{4})(分组1:前3位,分组2:后4位)
  • 公式:
    =REGEXP.REPLACE(A4, "(1[3-9]\d{2})\d{4}(\d{4})", "$1****$2")
    
  • 测试结果:
    A4 内容 公式返回值
    13800138000 138****8000

案例 4:忽略大小写匹配(使用 options 参数)

需求:判断 A5 单元格是否包含 excel(不区分大小写)。

  • 公式:
    =REGEXP.MATCH(A5, "excel", 1)
    
  • 测试结果:
    A5 内容 公式返回值
    Excel 365 TRUE
    EXCEL 2021 TRUE
    word FALSE

五、注意事项

  1. 版本限制:REGEXP 系列函数仅支持 Excel 365/2021 及更高版本,低版本 Excel 需借助 VBA 或第三方插件实现正则功能。
  2. 转义字符:在 Excel 正则中,反斜杠 \ 无需额外转义(与其他编程语言不同),例如匹配小数点直接写 \. 即可。
  3. 多行模式:当 options=2 时,^$ 会匹配每行的开头和结尾,适用于处理换行符分隔的文本。
  4. 性能优化:复杂正则表达式在处理大量数据时可能较慢,建议先筛选目标数据再使用函数。
匠心独运,千锤百炼,品质非凡。
回复 转播

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

您需要 登录 后才可以回复,轻松玩转社区,没有帐号?立即注册
快速回复
关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表