1. 核心价值与适用范围
💡 场景价值:
主要用于在【自动化 - 快捷按钮】中处理非结构化文本。通过正则函数,我们可以直接在伙伴云中完成复杂的文本清洗、关键信息提取和格式转换,无需依赖外部代码开发。
2. 正则符号速查表(必读基础)
理解这些符号是使用函数的前提。以下是业务中最高频使用的规则:
| 符号 | 含义 | 示例 |
|---|---|---|
\d |
代表一个数字 | \d(11) = 匹配连续的11位数字 |
(n) |
前面的元素重复 n 次 | \d(4) = 连续匹配4个数字 |
. |
代表任意字符(换行符除外) | 张. = 匹配"张三"、"张四"、"张飞" |
+ |
前面的元素出现 1 次或多次 | \d+ = 匹配任意长度的数字串(贪婪模式) |
* |
前面的元素出现 0 次或多次 | ab* = 匹配 a, ab, abb... (b可以没有,也可以有多个) |
? |
前面的元素出现 0 次或 1 次 | https? = 匹配 http 或 https (s可有可无) |
[ ] |
范围匹配 | [A-Z] = 匹配任意大写字母 |
[^] |
排除范围(取反) | [^>] = 匹配除了 > 以外的任意字符 |
() |
分组捕获(重点) | 将匹配内容切分为组,用于后续 $1, $2 提取或重组 |
| ` | ` | 或逻辑 |
^ |
开头锁定 | ^1 = 文本必须以1开头 |
$ |
结尾锁定 | 元$ = 文本必须以"元"结尾 |
3. 函数实战与场景解析
3.1 🕵️ 抓取专家:REGEXP_MATCH
一句话介绍:在一堆乱七八糟的文字里,精准把你要的那一个东西"抠"出来。
- 场景:从客户备注中提取手机号
- 公式:
REGEXP_MATCH({备注字段}, '\d{11}')
- 原理:扫描文本,一旦发现连续11个数字,立即停止扫描并返回结果
3.2 🕵️♀️ 抓取全家桶:REGEXP_MATCH_ALL
一句话介绍:MATCH 只能抓第一个,MATCH_ALL 能把符合条件的所有东西都抓出来,变成一个列表。
- 场景:提取跟进记录中提及的所有产品型号(如 A-100, B-200)
- 公式:
REGEXP_MATCH_ALL({跟进记录}, '[A-Z]-\d{3}')
- 原理:
[A-Z]匹配大写字母,-匹配横杠,\d{3}匹配3位数字。函数会找出全文中所有符合该结构的内容
3.3 🛡️ 隐私保镖:REGEXP_REPLACE
一句话介绍:把你不想要的内容,替换成别的内容(或者直接删掉)。
- 场景:手机号脱敏,将 13812345678 变为 138****5678
- 公式:
REGEXP_REPLACE({手机号}, '(\d{3})\d{4}(\d{4})', '$1****$2')
- 原理:利用
()分组捕获,保留第1组(前3位)和第2组(后4位),中间部分直接用****覆盖
3.4 🚦 质检员:REGEXP_TEST
一句话介绍:它不提取数据,只告诉你"有"还是"没有"(返回 True/False),常用于条件判断。
- 场景:判断工单描述中是否包含"投诉"、"报警"或"工商"等高风险词汇
- 公式:
REGEXP_TEST({工单描述}, '投诉|报警|工商')
- 原理:
|代表"或"逻辑,命中任意一个即返回真
3.5 🔪 拆分大师:REGEXP_SPLIT
一句话介绍:按照指定的符号,把一长串文字"切"成好几段,转为数组。
- 场景:将"张三、李四、王五"这种文本名单转为数组,以便计算人数
- 公式:
REGEXP_SPLIT({名单}, '、')
- 原理:以顿号为分隔符进行切分
4. 高阶应用:HTML 转纯文本(HTML2TEXT 替代方案)
伙伴云暂无内置的 HTML 转文本函数,我们需要利用 REGEXP_REPLACE 逐步清洗。以下是三种不同精度的处理方案:
方案 A:基础版(仅去除标签)
适用:简单的富文本,没有复杂的空格或排版
REGEXP_REPLACE({富文本字段}, '<[^>]+>', '')
原理:< 开始,[^>]+ 匹配除了右尖括号外的所有内容,> 结束。这能精准命中所有 HTML 标签并将其删除
方案 B:进阶版(去除标签 + 清理转义符)
适用:文本中包含 (HTML空格)导致清洗后有乱码
REGEXP_REPLACE(
REGEXP_REPLACE({富文本字段}, '<[^>]+>', ''),
' ',
' '
)
原理:嵌套两层。内层先删标签,外层再把残留的 替换为键盘输入的普通空格
方案 C:终极版(去标签 + 换行处理 + 关键字段提取)
适用:处理 AI 生成的内容或网页抓取的复杂文章,保留段落结构和列表格式
REGEXP_REPLACE(
REGEXP_REPLACE(
REGEXP_REPLACE(
REGEXP_REPLACE(
{富文本字段},
/* 第1步:将列表<li>替换为换行符+短横线,模拟无序列表 */
'<(li|LI)[^>]*>',
CONCAT(LF(), '- ')
),
/* 第2步:将段落<p>、<div>、表格<tr>、标题<h1-6>、换行<br>替换为系统换行符 */
'</(p|P|div|DIV|tr|TR|h[1-6])>|<(br|BR)[^>]*>',
LF()
),
/* 第3步:清理剩余的所有HTML标签 和 空格符 */
'<[^>]+>| ',
''
),
/* 第4步(可选):给特定的关键小标题(如核心共识、关键配置演示)前加换行,并重新排版 */
'([0-9]\s)?(核心共识|关键配置演示)',
CONCAT(LF(), LF(), '$1$2')
)
🧠 核心正则原理拆解:
-
<(li|LI)[^>]*>- 意图:识别列表项
<li> - 解释:
li|LI兼容大小写;[^>]*允许标签里有属性(如<li style="...">) - 动作:替换为 换行符 + "- ",模拟 Markdown 的列表样式
- 意图:识别列表项
-
</(p|P|div|DIV|tr|TR|h[1-6])>|<(br|BR)[^>]*>- 意图:识别段落结束或换行位置
- 解释:匹配段落
</p>、区块</div>、表格行</tr>或标题</h1>的结束标签;或者直接匹配<br>换行标签 - 动作:替换为系统换行符
LF(),确保文字不会挤成一坨
-
<[^>]+>|- 意图:大扫除
- 解释:匹配剩余的所有 HTML 标签 或 空格转义符
- 动作:替换为空(删除)
-
([0-9]\s)?(核心共识|关键配置演示)- 意图:关键小标题排版美化
- 解释:
([0-9]\s)?:匹配可选的序号(如 "1 "),?表示序号可有可无(核心共识|...):匹配具体的关键词
- 动作:在这些标题前加两个换行符,使其在视觉上分段更清晰
5. 延伸对比:MD2HTML
讲完了"富文本转纯文本",顺带提及伙伴云的另一个函数 MD2HTML,它的作用正好相反。
- 功能:将 Markdown 语法的纯文本 → 渲染为 HTML 样式
- 效果:比如
MD2HTML('**重要**')会在页面上显示为 重要(加粗) - 总结:
REGEXP_REPLACE用于 "卸妆"(清洗数据用于计算/存储)MD2HTML用于 "化妆"(美化数据用于展示/通知)
6. 特别备注:关于"英文大小写"的匹配模式
在使用正则函数时,系统默认是严格区分大小写的(即 A ≠ a)。您可以根据业务场景,通过在公式末尾添加参数来调整这一规则:
| 模式 | 写法示例 | 含义 | 最佳适用场景 |
|---|---|---|---|
| 严格模式 (默认,不填参数) |
REGEXP_MATCH(..., 'vip') |
A ≠ a 只有完全一致才算匹配 |
机器数据/唯一编码 例如:区分产品批次号 x-100 和 X-100 |
| 宽容模式 (参数填 1) |
REGEXP_MATCH(..., 'vip', 1) |
A = a 忽略大小写差异 |
人工录入数据 例如:抓取邮箱或备注关键词。用户手写容易混淆大小写,开启此模式可防止漏抓 |