我正在尝试使用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);
}
答案 0 :(得分:1)
它没有捕获两次,数组的第二个值缺少HTTP,它位于捕获组之外,数组中的第一个结果是整个匹配值,而第二个是第一个(并且仅在这种情况下)捕获组值。
要获得继续执行正则表达式所需的所有值,直到字符串结束,如下所示:
var regExp = new RegExp("https?:\/\/([^\"]*)", "gmi"), urlsFound;
while( urlsFound = regExp.exec(entry) ) Logger.log( urlsFound[1] );