Split SQL Select Statement с RegEx - PullRequest
       3

Split SQL Select Statement с RegEx

0 голосов
/ 06 января 2012

Я хочу найти весь список столбцов в операторе SQL Select с регулярным выражением.

Например,

Select col1, col2,col3 from tab1;

Обязательно

[1]: col1
[2]: col2
[3]: col3

Одним из способов является это регулярное выражение

select.*from;

и затем разбить строку. Есть ли другой, более эффективный метод?

Спасибо

1 Ответ

1 голос
/ 06 января 2012

Я бы сказал, что ваша версия - самый эффективный способ.

Вы могли бы создать регулярное выражение, которое захватит всех за один прогон, но оно, безусловно, не будет таким же быстрым, как то, что вы делаете, и оно только предвидит, что from следующее, а не за тем, есть ли за ним select:

Pattern regex = Pattern.compile("\\w+(?=\\s*(?:,|\\bfrom\\b))(?=.*\\bfrom\\b)");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
    matchList.add(regexMatcher.group());
}

Так что, в целом, я бы сказал, пойти с тем, что у вас есть. Может сделать звездочку ленивой:

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