>我有一个简单的谷歌电子表格链接。
https://docs.google.com/spreadsheets/d/kdfaghlkdghidubtinvieorn/edit#gid=12345
我有以下正则表达式提取,它提取了链接的ID:
=REGEXEXTRACT(C2,"(?:/d/)(.*)(?:/edit)")
它似乎达到了预期的效果。
我正在尝试在谷歌脚本中重新创建它,但我没有得到相同的答案。
function regex() {
var link = "https://docs.google.com/spreadsheets/d/kdfaghlkdghidubtinvieorn/edit#gid=12345";
var regExp = new RegExp("(?:/d/)(.*)(?:/edit)", "gi")
var id = regExp.exec(link)[1];
Logger.log(id)
}
尝试(?:gid=.*)
所以你会得到 id 为gid=12345
您的正则表达式似乎与/d/之后的那些字母匹配得很好。 如果您正在寻找斜杠之间的单词字符,而不是贪婪的.*
,也许您会获得更好的结果?
/d/(w+)/
示例代码段:
function getIdFromLink(link){
let regExp = //d/(w+)//;
return regExp.exec(link)[1];
}
var link = "https://docs.google.com/spreadsheets/d/kdfaghlkdghidubtinvieorn/edit#gid=12345";
var id = getIdFromLink(link);
//Logger.log(id)
console.log("id: "+ id);
它与我不知道为什么的语法有关,但用另一个括号括起来似乎可以解决问题:
(?:(/d/))(.*)(?:/edit)