Как предложено в посте, который вы связали Разделение строк, когда аргумент существует во входных данных в различных формах , наилучшим подходом было бы использование языка, специфичного для домена (DSL), такого как ANTLR или JavaCC.
Например, очень простая грамматика ANTLR4, подобная следующей:
grammar simpleTest
start : 'INDEX' 'IN' '(' '\'' .*? '\'' ',' '\'' .*? '\'' ')';
при анализе вашего ввода выдает одно дерево со следующими узлами дерева:
TreeChildNode[0] = INDEX
TreeChildNode[1] = IN
TreeChildNode[2] = (
TreeChildNode[3] = '
TreeChildNode[4] = AAA // AAA could any sequence of char of any length
TreeChildNode[5] = '
TreeChildNode[6] = ,
TreeChildNode[7] = '
TreeChildNode[8] = BBB // BBB could any sequence of char of any length
TreeChildNode[9] = '
TreeChildNode[10] = )
вы можете реорганизовать свой вклад по своему усмотрению.