REGEXP 函数¶
1. 函数概述¶
在数据处理领域,正则表达式(Regular Expression,简称 Regex)一直被视为处理复杂文本的“神兵利器”。以往在表格软件中,要使用正则表达式通常需要编写 VBA 代码或安装插件。
WPS 表格率先内置了 REGEXP 函数,直接打破了这一壁垒。该函数允许用户直接在单元格中使用正则表达式来完成复杂的文本提取、格式校验和字符替换。它就像一把瑞士军刀,一个函数就能替代 LEFT、MID、FIND、SUBSTITUTE 等多个函数的组合,极大地提升了数据清洗的效率。
需要注意的是,在微软EXCEL中,正则表达式的处理函数分别为
REGEXTEST、REGEXEXTRACT和REGEXPREPLACE,而 WPS 表格则统一为REGEXP。
2. 基础语法¶
REGEXP 函数的设计非常集成化,通过改变参数即可切换不同的功能模式。
3. 参数说明¶
该函数共有 4 个参数,其中前两个为必填项,后两个根据需求选填。
| 参数顺序 | 参数名称 | 必填/选填 | 说明 |
|---|---|---|---|
| 1 | text | 必填 | 需要处理的原始文本或单元格引用。 |
| 2 | pattern | 必填 | 正则表达式规则。必须用双引号括起来(例如 "\d+")。这是函数的核心,决定了匹配什么内容。 |
| 3 | [mode] | 选填 | 操作模式(默认为 0)。 • 0:提取(Extract)。返回所有匹配到的子串。• 1:判断(Match)。判断文本是否符合规则,返回 TRUE 或 FALSE。• 2:替换(Replace)。将匹配到的内容替换为新文本。 |
| 4 | [replace_text] | 选填 | 替换文本。仅当第 3 参数(mode)为 2 时生效。指定要将匹配到的内容替换成什么。 |
4. 基础用法示范¶
REGEXP 函数的强大在于其正则表达式的灵活性。以下展示三种模式下的典型应用场景。
假设原始数据位于 A列。
场景一:提取模式 (Mode = 0)¶
目标:从杂乱的文本中提取出关键信息(如中文、数字)。
| 场景描述 | 原始数据 (A列) | 公式 (B列) | 结果 | 逻辑解析 |
|---|---|---|---|---|
| 提取所有数字 | "订单8902数量20个" |
=REGEXP(A2, "\d+", 0) |
8902 20 |
\d+ 代表匹配连续的数字。WPS 会利用数组特性,将结果填充到相邻单元格(或需配合 TEXTJOIN 使用)。 |
| 只提取中文 | "Product: 苹果 (Apple)" |
=REGEXP(A3, "[\u4e00-\u9fa5]+", 0) |
"苹果" |
[\u4e00-\u9fa5] 是匹配所有汉字的通用正则范围。 |
场景二:判断模式 (Mode = 1)¶
目标:用于数据验证,判断单元格内容是否符合特定格式。
| 场景描述 | 原始数据 (A列) | 公式 (B列) | 结果 | 逻辑解析 |
|---|---|---|---|---|
| 判断手机号 | "13812345678" |
=REGEXP(A4, "^1[3-9]\d{9}$", 1) |
TRUE |
判断是否以1开头,第二位是3-9,后面接9位数字,且首尾完整匹配。 |
| 判断包含某词 | "错误代码: 404" |
=REGEXP(A5, "错误", 1) |
TRUE |
只要文本中包含“错误”二字,即返回真。 |
场景三:替换模式 (Mode = 2)¶
目标:根据规则替换文本,比普通 SUBSTITUTE 更智能。
| 场景描述 | 原始数据 (A列) | 公式 (B列) | 结果 | 逻辑解析 |
|---|---|---|---|---|
| 隐私脱敏 | "13812345678" |
=REGEXP(A6, "(\d{3})\d{4}(\d{4})", 2, "$1****$2") |
"138****5678" |
使用括号 () 建立分组,用 $1 和 $2 保留首尾数字,中间替换为星号。 |
| 去除所有非数字 | "价格: ¥99.00元" |
=REGEXP(A7, "[^\d.]", 2, "") |
"99.00" |
[^\d.] 匹配除了数字和小数点以外的所有字符,并将它们替换为空。 |
5. 总结¶
WPS 的 REGEXP 函数是表格处理的一次重大升级。它将正则表达式这一程序员的工具下放到了普通表格界面中。
- 全能性:一个函数涵盖了提取、校验、替换三大功能。
- 高效性:能够处理传统函数极其难以解决的“模糊匹配”和“模式匹配”问题。
- 学习建议:使用该函数的门槛不在于函数本身,而在于正则表达式语法的学习。
一旦你掌握了基础的正则语法(如 \d 代表数字, . 代表任意字符),配合 REGEXP 函数,你处理非结构化数据的能力将得到质的飞跃,当然,更丰富的正则表达式语法可以参考这篇正则表达式