正则表达式函数应用指南

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:进阶版(去除标签 + 清理转义符)

适用:文本中包含 &nbsp;(HTML空格)导致清洗后有乱码

REGEXP_REPLACE(
    REGEXP_REPLACE({富文本字段}, '<[^>]+>', ''), 
    '&nbsp;', 
    ' '
)

原理:嵌套两层。内层先删标签,外层再把残留的 &nbsp; 替换为键盘输入的普通空格

方案 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标签 和 &nbsp;空格符 */
        '<[^>]+>|&nbsp;', 
        ''
    ),
    /* 第4步(可选):给特定的关键小标题(如核心共识、关键配置演示)前加换行,并重新排版 */
    '([0-9]\s)?(核心共识|关键配置演示)', 
    CONCAT(LF(), LF(), '$1$2')
)

🧠 核心正则原理拆解

  1. &lt;(li|LI)[^>]*>

    • 意图:识别列表项 <li>
    • 解释:li|LI 兼容大小写;[^>]* 允许标签里有属性(如 <li style="...">
    • 动作:替换为 换行符 + "- ",模拟 Markdown 的列表样式
  2. &lt;/(p|P|div|DIV|tr|TR|h[1-6])>|&lt;(br|BR)[^>]*>

    • 意图:识别段落结束或换行位置
    • 解释:匹配段落 </p>、区块 </div>、表格行 </tr> 或标题 </h1> 的结束标签;或者直接匹配 <br> 换行标签
    • 动作:替换为系统换行符 LF(),确保文字不会挤成一坨
  3. &lt;[^>]+>|

    • 意图:大扫除
    • 解释:匹配剩余的所有 HTML 标签 或 空格转义符
    • 动作:替换为空(删除)
  4. ([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
忽略大小写差异
人工录入数据
例如:抓取邮箱或备注关键词。用户手写容易混淆大小写,开启此模式可防止漏抓
2025-12-31 更新
9 次查看
0