如何在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
相关产品推荐
相关产品推荐

