用于从电子表格公式中提取有效单元格引用的正则表达式

2024-01-04

我正在尝试使用 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 不支持正则表达式的这一部分:{,1}。为了允许 0 或 1 次出现,需要{0,1},或者您可以将其替换为?:

/[^0-9a-zA-Z_$:](\$?[a-zA-Z]{1,2}\$?[1-9][0-9]*)(?![0-9a-zA-Z_:])/g;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于从电子表格公式中提取有效单元格引用的正则表达式 的相关文章

随机推荐

  • C++纯虚函数有函数体[重复]

    这个问题在这里已经有答案了 纯虚函数 当我们设置 0 也可以有一个函数体 如果纯虚函数根本不会被调用 那么为它们提供函数体有什么用呢 您认为无法调用纯虚函数的假设是绝对错误的 当一个函数被声明为纯虚函数时 它仅仅意味着该函数无法被调用动态地
  • 在哪里可以找到 Google Cloud 计算成本明细?

    我正在尝试 Google 云计算 它与 Microsoft Azure 完全不同 但我很难掌握它的窍门 例如 您在哪里可以找到相当于 Microsoft Azure 成本细目的 Google 云计算 请看这个截图 你就会知道我在说什么 微软
  • 检查大型矩阵 Matlab 中的重复条目

    我有一个非常大的矩阵 901x1801 它是通过组合三个相似数组 其中包含重复值 的值来生成的 以使用数学表达式生成唯一的代码 矩阵中充满了这些代码 我的问题是 我如何检查矩阵 901x1801 的每个值都是唯一的并且一次都不重复 或者 谁
  • D3.js 设置初始缩放级别

    我设置了几个图表来放大容器 效果很好 然而 在初始加载时 缩放级别太接近 有没有一种方法可以设置初始缩放级别以避免首先缩小 我熟悉 scale 方法 但没有运气实施它 这是要走的路还是我缺少什么 到目前为止 我所掌握的有关缩放的信息如下 v
  • SSIS 设计器运行速度非常慢

    我正在开发一个 SQL Server 集成服务包 我一直在对这个包进行一些重大重构 现在设计器运行得非常慢 即使在屏幕上移动组件也会导致设计人员停滞 2 3 分钟 查看任务管理器 Visual Studio 在此期间消耗了大约 80 的 C
  • 我可以查看由soap wcf 调用发出的原始请求吗

    我正在使用 WCF 向第三方服务发出 SOAP 请求 该服务要求我签署请求 我认为我正在这样做 但我收到错误 Could not create SSL TLS secure channel所以我想知道是否有办法查看正在发送的原始 xml 以
  • Laravel 4:保护控制器提供的路由

    我正在构建一个 Laravel 4 应用程序 我想保护我的管理区域 因此只有在用户登录 经过身份验证后才能访问它 做这个的最好方式是什么 Laravel 文档说你可以像这样保护路由 Route get profile array befor
  • android edittext 文本向右对齐,标签向左对齐

    我想要一个编辑文本 其中标签 名称 显示在编辑文本的左侧 并且从右到左输入输入 如果我将 android gravity 设置为 right 输入将从右到左 但在这种情况下 标签 即编辑文本的 android text 给出的任何内容 也会
  • 使用 Java 通过 Tensorflow Serving 进行推理

    我们正在将现有的 Java 生产代码转换为使用 Tensorflow Serving TFS 进行推理 我们已经重新训练了模型并使用新的 SavedModel 格式保存了它们 不再有冻结图表 从我读过的文档来看 TFS并不直接支持Java
  • 如何总结 XSL 中 for-each 循环的结果?

    我是 XSL 新手 所以我真的不知道如何做到这一点 我有一个 for each 语句 它对 单元格 类型的每个元素进行一些计算 如何汇总结果并将其存储在变量中以便显示它 我已经包含了部分代码 我希望有人知道这个问题的解决方案 感谢您的时间和
  • Google ndb 库中的内存泄漏

    我认为存在内存泄漏ndb图书馆 但我找不到在哪里 有没有办法避免下面描述的问题 您是否有更准确的测试想法来找出问题所在 这就是我重现问题的方式 我创建了一个包含 2 个文件的简约 Google App Engine 应用程序 app yam
  • 当特定条件为 true 时,Bash 替换字符串

    我正在尝试替换同一行中特定条件为真的字符串 我有一个包含一些行的文件 我在以另一个单词 word3 开头的每一行中用另一个单词 word2 替换一个单词 word1 例如 foo moo see kaa haa qee foo dee se
  • 查询 DBpedia 以获取图书的元数据

    我有一堆 ISBN 我要查询DBpedia并获取书籍的元数据 我无法理解SPARQL 有人可以告诉我如何获取一本书的元数据吗DBpedia在Java中 SPARQL 既是一种查询语言 也是一种查询所谓的协议SPARQL 端点 向 DBped
  • 从 Numpy 数组的索引中采样的有效方法?

    我想从 2D Numpy 数组的索引中进行采样 考虑到每个索引都按该数组内部的数字进行加权 我知道的方式是numpy random choice但是 这不会返回索引 而是返回数字本身 有什么有效的方法吗 这是我的代码 import nump
  • 我应该在 MVC Razor 中的哪里找到共享 @helper 函数

    我有一个辅助功能 可以将分钟变成小时 分钟 我目前在我的layout cshtml 中有它 但每个页面都看不到该功能 我应该将辅助函数放在哪里以便每个页面都可以看到它 helper DisplayElapsedTime int timeIn
  • 使用AWS Codebuild时如何读取SSM参数?

    我目前正在成功使用 codebuild 来执行简单的构建任务 在非 vpc 配置中 但现在我尝试运行一个读取 SSM 参数值的构建任务 但它失败了 因为它无法加载任何凭据 明显的原因是 com amazonaws auth Instance
  • 将 JSON 转换为字符串时如何解决此 Javascript 错误?

    Uncaught TypeError Converting circular structure to JSON 我试图字符串化的对象是这样的 我将其记录在javascript控制台中 Object GsearchResultClass G
  • 每 100 个元素对 Python 列表进行切片的最 Pythonic 方法 [重复]

    这个问题在这里已经有答案了 我有一个包含许多元素的列表 我想每 100 个元素将其切片为多个列表的列表 例如 gt gt gt a range 256 gt gt gt b slice a 100 b那么应该是 0 1 2 99 100 1
  • window.innerHeight 与 window.outerHeight 计算密度?

    当我开始使用 PhoneGap 一个标尺 开发一个简单的应用程序时 我遇到了一个问题 我的大部分移动背景都是使用原生 Android 所以我就从它开始 我是 javascript 和 html5 以及一般 Web 开发的初学者 Here h
  • 用于从电子表格公式中提取有效单元格引用的正则表达式

    我正在尝试使用 Google Apps 脚本 Javascript 从电子表格公式中提取有效的单元格引用和范围引用 有效的单元格引用是一个或两个字母 后跟不以零开头的连续数字 字母或数字前面可以有也可以没有 字符 整个引用不能以字母 数字或