2012-01-06 66 views
0

我想使用正則表達式找到SQL Select語句中的整列列表。使用正則表達式拆分SQL Select語句

例如,

Select col1, col2,col3 from tab1; 

必需

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

的一種方式是此正則表達式

select.*from; 

,然後分裂的字符串。還有其他更有效的方法嗎?

謝謝

+0

正則表達式只適用於最簡單的SQL語句。什麼是列別名?那麼在選擇列表中的子查詢或子選擇呢? – 2012-01-06 08:30:21

回答

1

我會說你的版本是最有效的方式。

可能建設,抓住所有那些在單次運行正則表達式,但它肯定不會是一樣快,你在做什麼,並且只期待未來看到一個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