Javascript 说出一个表情

Javascript 说出一个表情,javascript,arrays,regex,substring,Javascript,Arrays,Regex,Substring,假设我有两个例子 (A=1)和(B=2) (A=1)(B=2()) 我需要一种方法来获取以下数组: 我试图做的是以下几点 使用以下函数查找分隔符(在这种情况下,分隔符是空格“”和任何括号(或)) 任何帮助都将不胜感激。类似的问题和答案是 您可以拆分字符串(string.split(“”))然后从数组中删除空白,或者只需检查数组[i]!=“”在切换块之前。您要做的是 正则表达式不允许解析语言(数学表达式就是其中之一)。公式的树分解不能用它来完成 但是,regex可以让您区分令牌。这通常是通过读

假设我有两个例子

  • (A=1)和(B=2)
  • (A=1)(B=2()) 我需要一种方法来获取以下数组:

  • 我试图做的是以下几点

    使用以下函数查找分隔符(在这种情况下,分隔符是空格“
    ”和任何括号


    任何帮助都将不胜感激。

    类似的问题和答案是

    您可以拆分
    字符串(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