gpt4 book ai didi

c# - 用于提取函数名称及其参数的正则表达式

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

我正在构建一个应用程序,用户可以在其中为某些字段指定一个表达式。表达式也应包含函数。我需要评估这些表达式并在报告中显示最终值。

我有一个表达式来提取函数名称及其参数。以前,函数参数是十进制值。但是现在,参数也可以是表达式。

例如,

Round( 1  * (1+  1 /100) % (2 -1), 0)

Function-name : Round
Parameter1 : 1 * (1+ 1 /100) % (2 -1)
Parameter2 : 0

上一个正则表达式:

string pattern2 = @"([a-zA-Z]{1,})[[:blank:]]{0,}\(([^\(\)]{0,})\)";

此正则表达式不再帮助我查找表达式参数。

有人可以帮助我使用正确的正则表达式来提取函数名称和参数吗?我实现了 Math 类支持的全部或大部分功能。该程序是用c#构建的

在此先感谢您的帮助。

最佳答案

 "^\s*(\w+)\s*\((.*)\)"

group(1)是函数名

"," 拆分 group(2) 得到 para 列表。

已更新

因为我没有Windows系统(.Net也没有),所以我用python测试了一下。嵌套函数不是问题。如果我们在表达式的开头添加“^\s*”:

import re

s="Round(floor(1300 + 0.234 - 1.765), 1)"
m=re.match("^\s*(\w+)\s*\((.*)\)",s)
m.group(1)
Output: 'Round'

m.group(2)
Output: 'floor(1300 + 0.234 - 1.765), 1'
you can split if you like:
m.group(2).split(',')[0]
Out: 'floor(1300 + 0.234 - 1.765)'

m.group(2).split(',')[1]
Out: ' 1'

好吧,如果你的函数嵌套像 f(a(b,c(x,y)),foo, m(j,k(n,o(i,u))) ),我的代码将无法运行。

关于c# - 用于提取函数名称及其参数的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7679818/

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