【发布时间】:2020-06-12 02:44:28
【问题描述】:
我有一个 if 条件作为字符串,并想提取变量名。
示例 1:
Input: "((a>5 and b<20) or (c>30))"
Output: {"a", "b", "c"}
示例 2:
Input: "a==20"
Output: {"a"}
仅提取变量名的最佳方法是什么?
正则表达式会为此工作吗?条件可以是任意长度。
我还考虑过在空间上进行拆分,然后修剪掉不需要的字符,直到我们只得到变量名。
【问题讨论】:
-
你写过代码吗?如果没有,任何人都很难提供帮助。
-
我不认为你的条件的语法是规则的,特别是如果它们可以递归嵌套的话。您可以尝试编写递归下降解析器或类似的东西,将整个条件解析成一棵树,然后从树的叶子中提取变量名。
-
@RaghavMalik 树的建立时间会是不必要的开销吗?因为我将在提取变量名后丢弃树。