gpt4 book ai didi

java - 正则表达式过滤所有内部括号表达式

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:42:37 24 4
gpt4 key购买 nike

我正在构建一个查询生成器界面,其中的表达式必须进行歧义验证。我需要以下示例表达式的正确正则表达式语法。标准是,在某个级别(即带有一组括号),+- 不能同时出现。例如 (A + B + C) 是正确的,而 (A + B - C) 是错误的。我通过检查 +- 是否存在来验证它。如果有多个级别,我不确定如何正确执行此操作。

For ex: (A + (B - C - D) - E)

这里,虽然 (B - C - D) 不是模棱两可的,但总的来说是。我打算通过用一个字符 X 替换所有内部括号来解决它,它看起来像: (A + X - E) 然后验证它是否有更多比 +- 符号都好。我使用正则表达式 \((.*?)\) 选择 ( & ) 之间的元素并过滤 (A + (B - C - D) 而不是 (B - C - D)。我应该如何修改我的正则表达式来避免这个问题。它也应该适用于以下情况。

(A + H + (B + (C + D - E)) = (A + H + X)
(A + H + (B + (C + D - E) - F) - (G + H - I)) = (A + H + X - X)

如果有比上述方法更好的方法,我也很乐意使用它。

最佳答案

选择 /\([^()]*\)/ 评估符号,然后用虚拟值替换此内部括号。重复此操作,直到正则表达式没有结果。你应该在没有全局选项的情况下使用 g;因此只会选择第一次出现。

这是假设给定的数学公式总是正确的,您可能想要添加额外的控制,例如 (A + () + B) 没有大小写。如果不会出现这种情况,第一个小逻辑会有所帮助。

关于java - 正则表达式过滤所有内部括号表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35577766/

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