正则提取
函数名:wb_正则提取 / str_RegexExtract
功能描述
根据正则表达式从文本中提取所有匹配内容,支持横向或纵向输出,支持结果去重。
会员等级:🟢 免费版(Free)
语法
excel
=str_RegexExtract(文本, 正则表达式, 输出方向, 是否去重)参数
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| 文本 | String | 是 | 无 | 原始文本 |
| 正则表达式 | String | 是 | 无 | 正则表达式模式 |
| 输出方向 | Boolean | 否 | TRUE | TRUE=横向输出(1行N列),FALSE=纵向输出(N行1列) |
| 是否去重 | Boolean | 否 | FALSE | TRUE=去除重复结果,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 正则语法
错误处理
| 错误场景 | 返回值 |
|---|---|
| 文本或正则表达式为空 | "输入不能为空" |
| 未找到任何匹配项 | "未找到匹配项" |
| 去重后无有效数据 | "去重后无有效数据" |
| 正则表达式语法错误等异常 | "错误: {异常信息}" |