Google Script Regex返回部分/重复结果

时间:2015-10-13 19:15:10

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

我正在尝试使用Google Script从Google电子表格单元格中的大量文本中提取任意数量的网址。

我的当前脚本似乎记录了两次相同的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); 
}

1 个答案:

答案 0 :(得分:1)

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

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

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