[^,]+\([^\)]+\)|[^,]+,
Должен делать это хорошо, если вы всегда добавляете финальную ',' в строку выбора:
a,b,c,DATETOSTRING(date_attr_name,'mm/dd/yyyy'),f,gg,dr(tt,t,),fff
не сможет разделить последние атрибуты 'fff', но:
a,b,c,DATETOSTRING(date_attr_name,'mm/dd/yyyy'),f,gg,dr(tt,t,),fff,
бы это захватило. Так что небольшая предварительная обработка сгладит все.
Предостережение : это не учитывает выражение в выражении
EXP(arg1, EXP2(ARG11,ARG22), ARG2)
Скажите, может ли это произойти в запросах, которые вы должны обработать.
Предостережение bis : поскольку для этого требуется истинное регулярное выражение, а не простой разделитель, ожидаемый функцией split (), вы должны использовать Matcher, основанный на шаблоне [^,]+\([^\)]+\)|[^,]),
, и выполнять итерацию по Matcher.find ( ) заполнить массив атрибутов attrs
.
Короче говоря, с функцией split () не существует ни одного простого разделителя, который мог бы добиться цели.