【发布时间】:2014-02-07 13:56:08
【问题描述】:
我正在尝试使用 Google Apps 脚本 (Javascript) 从电子表格公式中提取有效的单元格引用和范围引用。
有效的单元格引用是一个或两个字母,后跟不以零开头的连续数字。字母或数字前面可能有也可能没有 $ 字符。整个引用不能以字母、数字或下划线(在这种情况下,它可能是电子表格函数或命名范围名称的一部分)或冒号(在这种情况下,它可能是范围参考)。
范围引用正则表达式 (rangeRefRe) 似乎运行良好;但我的单元格引用正则表达式 (cellRefRe) 找不到匹配项。如果有人能指出我做错了什么,那就太好了。
function myFunction()
{
var formula = '=A100+B$2:2+INDIRECT("A2:B")+$C3-SUM($D$1:$E5)';
var fSegments = formula.split('"'); // I want to exclude references within double quotation marks
var rangeRefRe = /[^0-9a-zA-Z_$]([0-9a-zA-Z$]+?:[0-9a-zA-Z$]+)(?![0-9a-zA-Z_])/g;
var cellRefRe = /[^0-9a-zA-Z_$:](\${,1}[a-zA-Z]{1,2}\${,1}[1-9][0-9]*)(?![0-9a-zA-Z_:])/g;
var refResult;
var references = [];
for (var i = 0; i < fSegments.length; i += 2)
{
while (refResult = rangeRefRe.exec(fSegments[i]))
{
references.push(refResult[1]);
}
while (refResult = cellRefRe.exec(fSegments[i]))
{
references.push(refResult[1]);
}
}
Logger.log(references);
}
【问题讨论】:
标签: javascript regex google-apps-script google-sheets