You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在BigQuery中提取字符串指定部分(移除末尾两段)

简便处理带连字符的字符串(移除末尾两段)

针对你需要移除字符串末尾两段以'-'分隔内容的需求,这里提供几种一行式的简便实现方式:

切片拼接法(多语言通用思路)

这是最直观且高效的方法,无需多次拆分拼接,一行即可完成:

Python 实现

s = "28f1e5f7-47c6-4d67-bcbf-9e807c379076-9780-gThGFkHY0CeFCPwA6Efys7"
result = '-'.join(s.split('-')[:-2])
# 输出: 28f1e5f7-47c6-4d67-bcbf-9e807c379076

split('-') 将字符串按'-'分割为列表,[:-2] 取列表中除最后两个元素外的所有内容,最后用'-'.join()重新拼接成字符串。

JavaScript 实现

const str = "28f1e5f7-47c6-4d67-bcbf-9e807c379076-9780-gThGFkHY0CeFCPwA6Efys7";
const result = str.split('-').slice(0, -2).join('-');
// 输出: 28f1e5f7-47c6-4d67-bcbf-9e807c379076

逻辑和Python一致,slice(0, -2) 截取数组前n-2个元素(n为数组长度)。

正则替换法

如果偏好正则表达式,也可以直接匹配并替换掉末尾两段:

Python 实现

import re
s = "28f1e5f7-47c6-4d67-bcbf-9e807c379076-9780-gThGFkHY0CeFCPwA6Efys7"
result = re.sub(r'^(.*)-[^-]+-[^-]+$', r'\1', s)

正则表达式^(.*)-[^-]+-[^-]+$匹配整个字符串,捕获组\1保留最后两个'-'之前的所有内容。

JavaScript 实现

const str = "28f1e5f7-47c6-4d67-bcbf-9e807c379076-9780-gThGFkHY0CeFCPwA6Efys7";
const result = str.replace(/^(.*)-[^-]+-[^-]+$/, '$1');

逻辑同上,用$1引用捕获的内容完成替换。

内容的提问来源于stack exchange,提问作者bambi789

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 00:20:21