如何使用Google Sheets的REGEXEXTRACT移除多括号间文本提取活动名
正则提取方案
你原有公式出错的核心原因是正则中的.*为贪婪匹配,会尽可能匹配更长的内容,因此直接吞掉了中间多个方括号的内容,无法得到目标结果。
可使用如下修正后的公式:
=REGEXEXTRACT(K8, "^(?:\[.*?\]\s*\|\s*){3}(.*?)\s*\|")
正则逻辑说明:
- 开头的非捕获组
(?:\[.*?\]\s*\|\s*){3}会匹配3次「方括号包裹内容 + |分隔符 + 前后空格」的组合,刚好跳过前面的[Ads]、[Bing]、[Leaderboard]三个标签段 - 后续的捕获组
(.*?)非贪婪匹配两个|分隔符之间的活动名称 - 末尾匹配后续的|分隔符作为边界锁定,避免取到后方的日期内容
无正则的更简单实现
Google Sheets也可以直接用拆分函数实现需求,公式更易懂好维护:
=TRIM(INDEX(SPLIT(K8, "|"), 4))
逻辑说明:
- 先用
SPLIT函数按|把整段文本拆分为数组,拆分后数组的第4项就是目标活动名称 - 用
INDEX取出第4项,再用TRIM去掉内容前后的多余空格即可得到结果
内容的提问来源于stack exchange,提问作者Shannon Williams
相关产品推荐
相关产品推荐

