Skip to content

正则提取

函数名:wb_正则提取 / str_RegexExtract

功能描述

根据正则表达式从文本中提取所有匹配内容,支持横向或纵向输出,支持结果去重。

会员等级:🟢 免费版(Free)

语法

excel
=str_RegexExtract(文本, 正则表达式, 输出方向, 是否去重)

参数

参数名类型必填默认值说明
文本String原始文本
正则表达式String正则表达式模式
输出方向BooleanTRUETRUE=横向输出(1行N列),FALSE=纵向输出(N行1列)
是否去重BooleanFALSETRUE=去除重复结果,FALSE=保留全部结果

返回值

Object[,] - 匹配结果数组。横向输出为 1 行 N 列,纵向输出为 N 行 1 列。

使用示例

提取所有数字

公式

excel
=str_RegexExtract("订单A123和B456", "\d+", TRUE)

结果(横向输出):

123	456

提取邮箱地址

公式

excel
=str_RegexExtract("联系:a@x.com 或 b@y.com", "[\w\.]+@[\w\.]+", FALSE)

结果(纵向输出):

a@x.com
b@y.com

去重提取

公式

excel
=str_RegexExtract("AA BB AA CC", "[A-Z]+", TRUE, TRUE)

结果(去重后横向输出):

AA	BB	CC

技术说明

  • 使用 System.Text.RegularExpressions.Regex.Matches 方法获取所有匹配项,提取每个匹配的 Match.Value
  • 是否去重 为 TRUE 时,通过 LINQ 的 Distinct() 方法去除重复匹配结果
  • 输出方向 为 TRUE(横向)时返回 1 行 N 列数组;为 FALSE(纵向)时返回 N 行 1 列数组
  • 结果数组可在 Excel 中溢出到相邻单元格区域显示
  • 正则表达式采用 .NET 正则语法

错误处理

错误场景返回值
文本或正则表达式为空"输入不能为空"
未找到任何匹配项"未找到匹配项"
去重后无有效数据"去重后无有效数据"
正则表达式语法错误等异常"错误: {异常信息}"

基于源代码最新版本文档