因此,我是Java的新手,并希望在此提供一些帮助。我有这样的字符串,

`( ( t1.INDEX BETWEEN  100 and 200 ) OR ( t1.INDEX BETWEEN  'AAA' and 'BBB' ) AND ( t1.INDEX IN('AAA','BBB') ) AND ( t1.INDEX = 'AAA' OR t1.INDEX = 'BBB' ) OR ( t1.INDEX=123 ) )`


我想把它分成这样的子表达式,

`Expression = ( t1.INDEX BETWEEN  100 and 200 )
Operator = OR
Expression = ( t1.INDEX BETWEEN  'AAA' and 'BBB' )
Operator = AND
Expression = ( t1.INDEX IN('AAA','BBB') )
Operator = AND
Expression = ( t1.INDEX = 'AAA' OR t1.INDEX = 'BBB' )
Operator = OR
Expression = ( t1.INDEX=123 )`


用Java做到这一点的最佳方法是什么?我经历过Multi-level String split,但它无法处理括号。

最佳答案

最好的方法是使用解析器,例如ANTLRJavaCC

您也可以使用方括号将其作为表达式分隔符,使用regex对其进行拆分,但这是一个有问题且麻烦的解决方案,尤其是当您的语法比显示的复杂得多时。

关于java - 当参数以不同形式存在于输入中时分割字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55255391/

10-11 22:06
查看更多