【问题标题】:Google Script Regex Returns Partial/Repeat Result谷歌脚本正则表达式返回部分/重复结果
【发布时间】:2015-10-13 19:15:09
【问题描述】:

我正在尝试使用 Google 脚本从 Google 电子表格单元格中的一大块文本中提取任意数量的 URL。

尽管有其他 URL,但我当前的脚本似乎两次记录了相同的 URL。相同的正则表达式似乎在the regex101 validator 中运行良好。我正在使用的脚本如下,在 regex101 示例中看到的相同内容的记录响应是 [http://dianeravitch.net/,dianeravitch.net/]。

 function findURL() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[1];
  var range = sheet.getRange(4,3);
  var entry = range.getValue();
  var regExp = new RegExp("https?:\/\/([^\"]*)", "gmi"); 
var urlsFound = regExp.exec(entry);
Logger.log(urlsFound); 
}

【问题讨论】:

    标签: regex google-apps-script google-sheets


    【解决方案1】:

    它没有捕获两次,数组的第二个值缺少HTTP,它在捕获组之外,数组中的第一个结果是整个匹配值,而第二个是第一个(并且只有在这种情况下)捕获组值。

    要获取所有值,您需要继续执行正则表达式直到字符串结束,如下所示:

    var regExp = new RegExp("https?:\/\/([^\"]*)", "gmi"), urlsFound; 
    while( urlsFound = regExp.exec(entry) ) Logger.log( urlsFound[1] );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      • 2019-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-22
      相关资源
      最近更新 更多