gpt4 book ai didi

c# - 从公式字符串中解析出 Excel 函数

转载 作者:行者123 更新时间:2023-11-30 16:16:15 24 4
gpt4 key购买 nike

我有一个包含 Excel 公式的字符串。如何从字符串中解析出每个特定的函数名称?

我不知道如何为此编写正则表达式。基本上它必须是 ( 之前的字符串,不在单引号或双引号中。

例如:

  1. =VLOOKUP($A9,'Summary'!$A$10:$C$30,3,FALSE) - 应返回 VLOOKUP

  2. =IFERROR((C10/B10),"N/A") - 应该返回 IFERROR

  3. ='New Chart Data (Date)'!L70 - 应该什么都不返回,因为没有函数

  4. =IFERROR((C10/B10),Len(E30)) - 应返回 IFERRORLEN

  5. ='New Chart Data(Date)'!L70 + Len(5) - 应返回 Len。这是棘手的一个。很多也会返回 Data,这是错误的。

有什么想法吗?

提前致谢。

最佳答案

我想你可以使用这样的东西......

(?<=[=,])[A-Za-z2]+(?=\()

regex101 demo (带有正则表达式的描述)

实际上,有一个问题:=IFERROR((C10/B10), Len(E30)) 等公式不会得到 Len。您可以改用这个并修剪任何空格(如果有):

(?<=[=,])\s*[A-Za-z2]+(?=\()

或者因为 C# 接受可变长度的回顾...

(?<=[=,]\s*)[A-Za-z2]+(?=\()

我认为这比以前需要更多的资源。

编辑:我没有想到工作表名称可以采用 =Sheet(2) 的形式,例如='=Sheet(2)'!A1

(?<=[=,])\s*[A-Za-z2]+(?=\()(?![^']*'!)

revised regex101

EDIT2:也忘记了运算符...我想我会使用像 Andy 那样的词边界,因为唯一的问题是

\b[A-Za-z2]+(?=\()(?![^']*'!)

updated regex101

关于c# - 从公式字符串中解析出 Excel 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18622013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com