我想将 JMP 公式中找到的所有列名称引用提取到列表中,特别标识其列依赖性。 JMP 公式可能相当复杂;例如,他们可能会创建 JSL 代码作为包含列名称的输出。 我对这些列名称不感兴趣,因为公式不依赖于它们。 我只对它用于计算结果的列名称感兴趣。 有没有一种简单的方法可以做到这一点,而无需以编程方式解析公式?
这是我最初计划的草图。
将公式转换为字符串并搜索三个元素::、:\!"、\!"。
- 首先删除所有引号。 查找前面没有 : 的第一个 \!",然后查找其匹配的 \!"没有前面的 : 并且没有多重转义引号。 将其识别为公式中的引号并将其删除(或跳过它)。 然后重复整个公式
- 然后在字符串中搜索名称
- 如果找到 :,则继续,直到找到“名称中断”字符(例如逗号)。 存储为字符串格式的名称之一
- 如果找到
!",则继续,直到找到 \!"n。 将名称字符串存储为名称之一
- 最后,对名称列表进行重复删除,确保它们是唯一的。
有没有更优雅的方法来做到这一点?
如果不是,上面的内容可能会出现什么问题? 是否有其他方法可以在公式中指定列名称?
我愿意假设公式是通过传统的点击公式编辑器创建的,并且不使用 JSL 代码。 例如,在公式中使用 Parse() 解析列引用的 JSL 代码将超出范围。 不过,如果它也能做到这一点那就太好了:)。
这里有一些帖子可能会提供一些想法Head Arg 递归公式(我会使用类似的东西来避免字符串转换),如何自动提取JSL代码中公式使用的列名?