Javascript 说出一个表情
假设我有两个例子Javascript 说出一个表情,javascript,arrays,regex,substring,Javascript,Arrays,Regex,Substring,假设我有两个例子 (A=1)和(B=2) (A=1)(B=2()) 我需要一种方法来获取以下数组: 我试图做的是以下几点 使用以下函数查找分隔符(在这种情况下,分隔符是空格“”和任何括号(或)) 任何帮助都将不胜感激。类似的问题和答案是 您可以拆分字符串(string.split(“”))然后从数组中删除空白,或者只需检查数组[i]!=“”在切换块之前。您要做的是 正则表达式不允许解析语言(数学表达式就是其中之一)。公式的树分解不能用它来完成 但是,regex可以让您区分令牌。这通常是通过读
”和任何括号(
或)
)
任何帮助都将不胜感激。类似的问题和答案是 您可以拆分
字符串(string.split(“”))
然后从数组中删除空白
,或者只需检查数组[i]!=“”代码>在切换块之前。您要做的是
正则表达式不允许解析语言(数学表达式就是其中之一)。公式的树分解不能用它来完成
但是,regex可以让您区分令牌。这通常是通过读取字符流来完成的。一旦检测到词素,就生成标记
如果您想要检查公式的有效性,或者计算值:您需要一个解析器(语义分析器)。这不能使用正则表达式来完成。您可以只匹配您感兴趣的令牌:
var str = "(A = 1) and ( B = 2)";
var arr = str.match(/[()]|[^()\s]+/g);
结果:
["(", "A", "=", "1", ")", "and", "(", "B", "=", "2", ")"]
带有一些注释的正则表达式:
[()] # match a single character token
| # or
[^()\s]+ # match everything else except spaces
如果您想添加更多单字符标记,例如a=
,只需将其添加到两个字符类中即可。Ie:[()=]|[^()=\s]+
那么你正在尝试编写某种语法分析器?我正在尝试获取该表达式,以便我可以评估它是否正确,并给出一个“id”对于每个项目,A将是一个术语=将是一个运算符,括号将保留括号:)我建议查看此链接和相关链接:您是否尝试过按\b
拆分?因此,我阅读了这篇文章,从中可以看出,最好的做法是在找到分隔符的同时对其进行解析。不要事后感谢您提供的信息我想我需要学习更多的正则表达式:),因为它不是我的专业领域。这是一个非常优雅的解决方案,谢谢。
["(", "A", "=", "1", ")", "and", "(", "B", "=", "2", ")"]
[()] # match a single character token
| # or
[^()\s]+ # match everything else except spaces