Мы знаем, что String.format () может принимать формат с таким стилем: %[argument_index$][flags][width][.precision]conversion
, который хорошо известен как формат C printf () и представлен в Java 1.5.
Моя задача - генерировать сложный форматвключая повторные или дополнительные параметры.Например, с форматом:
select %1 from %2 where %3 and give %1->'*' %2->'users' %3->'age>20'
он вернул:
select * from users where age>20
формат может поддерживаться Stirng.format ().
Однако я ожидаюформат, подобный следующему:
select %1{, } from (%2(as %3)){,} (where %4 (and %5))?
when: %1->'*', %2->'users' %3->null, %3->'age>20'
вернул:
select * from users where age>20
when: %1->Stirng{'name','age'} , %2->'users' %3->'u', %4->'age>20', %5->null
вернул:
select name, age from users as u where age>20
when: %1->Stirng{'name','age'} , %2->'users' %3->'u', %4->null, %5->null
вернул:
select name, age from users as u
when: %1->Stirng{'name','age'} , %2->String{'users','order'} %3->{'u','o'}, %4->'age>20', %5->'u.id=o.userid'
он вернулся:
select name, age from users as u,orders as o where age>20 and u.id=o.userid
Я думаю, теперь вы можете понять мои значения.Есть ли зрелая библиотека для такой сложной работы с анти-регулярными выражениями?