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

Google Sheets提取URL中images/后内容的正确方法

Google Sheets 提取"images/"后子串的正确方法

需求说明

我在Google Sheets中有如下URL数据:

url
https://www.testwebsite.com/compute/v1/test/images-prd-5d4d/glob/images/testimage-vsfd
https://www.testwebsite.com/compute/v1/test/images-prd-5d4d/glob/images/testimage-sdawr|

需要提取**"images/"之后的内容**,但要注意:如果提取结果包含|符号,则返回空值,预期结果如下:

url提取结果
https://www.testwebsite.com/compute/v1/test/images-prd-5d4d/glob/images/testimage-vsfdtestimage-vsfd
https://www.testwebsite.com/compute/v1/test/images-prd-5d4d/glob/images/testimage-sdawr|testimage-sdawr

我之前写的Google Apps Script函数只能提取最后一个"-"之后的内容,代码如下:

function strip() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("Sheet6");
  const vs = sh.getRange(2,1,sh.getLastRow() - 1).getDisplayValues().flat();
  let vo = vs.map(s => [s.match(/\b[0-9A-Zaz/]+$/gi)[0]]);
  sh.getRange(2,2,vo.length,1).setValues(vo);
}

解决方案

方法1:正则表达式匹配法

修改正则逻辑,精准定位images/并提取后续内容,同时添加|符号判断:

function extractAfterImages() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("Sheet6");
  const dataRange = sh.getRange(2, 1, sh.getLastRow() - 1);
  const urls = dataRange.getDisplayValues().flat();
  
  const results = urls.map(url => {
    // 匹配images/之后的所有内容
    const match = url.match(/images\/(.*)$/);
    if (!match) return [""];
    const extracted = match[1];
    // 包含|则返回空,否则返回提取内容
    return extracted.includes("|") ? [""] : [extracted];
  });
  
  sh.getRange(2, 2, results.length, 1).setValues(results);
}

方法2:字符串拆分法(非正则)

如果不想用正则,也可以通过字符串拆分实现需求:

function extractAfterImages() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("Sheet6");
  const dataRange = sh.getRange(2, 1, sh.getLastRow() - 1);
  const urls = dataRange.getDisplayValues().flat();
  
  const results = urls.map(url => {
    const parts = url.split("images/");
    if (parts.length < 2) return [""];
    const extracted = parts[1];
    return extracted.includes("|") ? [""] : [extracted];
  });
  
  sh.getRange(2, 2, results.length, 1).setValues(results);
}

关键说明

  • 两种方法都能准确定位images/的位置,提取后续全部内容;
  • 新增了|符号判断逻辑,完全符合预期结果要求;
  • 替换了原代码中匹配范围偏差的正则,避免提取错误内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:12:36