Разделение строк, когда аргумент существует в разных формах на входе - PullRequest
0 голосов
/ 20 марта 2019

Итак, я новичок в 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? Я прошел через Многоуровневое разбиение строк , но он не будет обрабатывать паратезы.

1 Ответ

1 голос
/ 20 марта 2019

Лучшим подходом будет использование парсера, например ANTLR или JavaCC .

Вы также можете разделить его с помощью регулярных выражений, используя скобки в качестве разделителей выражений, но этокакое-то ошибочное и неприятное решение, особенно если ваша грамматика намного сложнее, чем вы показали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...