完美解析从sql 中解析表名
package com.dxm.ide.util;
import java.util.*;
import java.util.regex.Pattern;
public class GetTableNames {
//去除注释
public synchronized static String dSql(String sql) {
Pattern p = Pattern.compile("(?ms)('(?:''|[^'])*')|--.*?$|/\\*.*?\\*/|#.*?$|");
return p.matcher(sql).replaceAll("$1");
}
//解析sql
public synchronized static void parseSql(String sql, Set<String> tableList) {
sql = sql.toLowerCase().replaceAll("\t", " ");
HashMap<Object, Object> map = new HashMap<>();
int from_ = sql.indexOf(" from ");
map.put(from_, 6);
int where_ = sql.indexOf(" where ");
map.put(where_, 7 + where_);
int left_outer_join_ = sql.indexOf("left outer join ");
map.put(left_outer_join_, 16 + left_outer_join_);
int limit_ = sql.indexOf(&