gpt4 book ai didi

java - 当在字符串中发现某些数学逻辑时验证括号是否存在

转载 作者:行者123 更新时间:2023-12-02 05:05:32 25 4
gpt4 key购买 nike

目前,我使用一些以字符串形式给出的逻辑和数学表达式。不幸的是,使用字符时需要在表达式上使用方括号:'&''|'(用来代替 '||'>).

有效表达式:

(x + 2) & (y * 4) | (一-4)
(5 > 4) | (6y + 4)

无效表达式:

x + 2 & y * 4 |我-4
5 > 4 | 5 > 4 6y + 4

我尝试使用正则表达式检查字符串,例如:

[)][\t\n\r]*[&][\t\n\r]*[(] 有道理。

问题是:如何找到所有 '&''|' 字符并找到近括号的存在?

编辑:我有一个基于搜索这些字符的索引的解决方案,然后以两种方式查找括号。也许我可以用 RegEx 以更简单的方式做到这一点?

最佳答案

相对简单的解决方案:

  1. 拆分&|
  2. 修剪所有子表达式;
  3. 检查它们是否都以 ( 开头并以 ) 结尾
<小时/>

片段:

String s = "(x + 2) & (y * 4) | (i - 4)";

boolean valid = Arrays.stream(s.split("[&|]"))
.map(String::trim)
.allMatch(p -> p.startsWith("(") && p.endsWith(")"));

如果您需要解决比问题中提出的场景更复杂的场景(嵌套表达式等),则需要编写一个解析器。

关于java - 当在字符串中发现某些数学逻辑时验证括号是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56354338/

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