public static String[] getTableFromSQL(String SQL) {
		// , String[] asTable //(?:exp) 匹配exp,不捕获匹配的文本，也不给此分组分配组号
		// (?:exp)不会改变正则表达式的处理方式，只是这样的组匹配的内容不会被捕获到某个组里面，也不会拥有组号。
		SQL = " " + SQL; // sql最前面加个空格主要是”update,delete“的正确匹配
		String regex = "\\s+(?:(?:from|join|update|into)\\s+)";
		regex += "(?:(?:(?:\\w+\\.)?\\w+(?:\\s+as)?(?:\\s+\\w+)?\\s*,\\s*)*)";
		regex += "(?:\\w+\\.)?(\\w+)";
		// {%s}
		Pattern patt = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
		Matcher matcher = patt.matcher(SQL);
		ArrayList<String> list = new ArrayList<String>();
		while (matcher.find()) {
			String temp = matcher.group().toUpperCase()
					.replaceAll(" FROM ", "").replaceAll(" JOIN ", "")
					.replaceAll(" UPDATE ", "").replaceAll(" INTO ", "")
					.replaceAll(" DELETE ", "").replaceAll("INSERT INTO", "");
			// SCM_DBRIGHTS不用检查 by zhufw 2008-09-09
			// 业务权限在执行initdatabase前已经被使用 要在dbm里创建
			// .replaceAll("SCM_META RIGHTS", "").replaceAll("GP_ROLE ROLE",
			// "");
			String[] tbls = null;
			if (!temp.trim().equals("")) {
				tbls = split(temp, ",");
				// Node node = new Node(matcher.group(), matcher.start(),
				// (matcher.end() - 1));
				// valueMap.put(matcher.group(), matcher.group());
				for (int i = 0; i < tbls.length; i++) {
					temp = split(tbls[i].trim(), " ")[0];
					if (!list.contains(temp))
						list.add(temp);
				}
			}
		}
		return (String[]) list.toArray(new String[0]);
	}