java 正则 sql_使用正则表达式解析SQL语句

问题:将左边的SQL语句解析成右边的形式

Select c1,c2,c3 From t1,t2,t3 Where condi1=5 and condi6=6 or condi7=7 Group  by g1,g2,g3 order  by g2,g3

select

c1,

c2,

c3

from

t1,

t2,

t3

where

condi1=5 and

condi6=6 or

condi7=7

group by

g1,

g2,

g3

order by

g2,

g3

按关键字找出SQL语句中各部分

我们阅读SQL语句会把整句分来成列,表,条件,分组字段,排序字段来理解,解析SQL的目的也是这样.

分解SQL语句有规律可循,以列为例,它必定包含在select和from之间,我们只要能找到SQL语句中的关键字select和from,就能找到查询的列.

怎么找到select和from之间的文字呢?其实一个正则表达式就能解决:(select)(.+)(from),其中第二组(.+)代表的文字就是select和from之间的文字.

程序见右边.

/**

* 从文本text中找到regex首次匹配的字符串,不区分大小写

* @param regex: 正则表达式

* @param text:欲查找的字符串

* @return regex首次匹配的字符串,如未匹配返回空

*/

private static String getMatchedString(String regex,String text){

Pattern pattern=Pattern.compile(regex,Pattern.CASE_INSENSITIVE);

Matcher matcher=pattern.matcher(text);

while(matcher.find()){

return matcher.group(2);

}

return null;

}

解析函数分析

private static String getMatchedString(String regex,String text){

Pattern pattern=Pattern.compile(regex,Pattern.CASE_INSENSITIVE);

Matcher matcher=pattern.matcher(text);

while(matcher.find()){

你可能感兴趣的:(java,正则,sql)