我有用户可以提供的表达式,例如:
a*sin(w*t)
a+b/c
x^2+y^2/2
我想得到变量列表。我不需要做任何替换。第一个公式是{a,w,t}
。对于第二个{a,b,c}
,对于最后一个{x,y}
。你知道吗
表达式主要是用分析来分析的,但是我需要能够在C++中获得变量列表来进行一些检查。我想:
- 避免将整个Python解释器链接到我的程序
- 避免重新发明轮子,因为我看到有很多可用的解析库,比如
muparser
,但是我不知道这些库是否提供了这个功能
最简单的方法是什么?你将如何解决这个问题?你知道吗
Tags:
给定一个输入:
const string input
我们可以用regex将变量收集到set<string>
:^{}
可以在C++中使用如下:
Live Example
编辑:
regex
说明:\b
断言\W
字符或字符串的开头或结尾([a-zA-Z]
捕获任何以字母字符开头的内容\w*)
后跟任意数量的“word”字符(?:
指定非捕获可选匹配的开始[[^(a-zA-Z0-9_]
1st选项是一个非开括号\W
字符|$)
另一个选项是已经到达输入的末尾相关问题 更多 >
编程相关推荐