源代码如下:
public class StringRegex {
public static void main(String[] args) {
//String s = "select * from analog_data_ECONFUNC(LAST0MONTH,0,TIME_FORMAT_YYYYMM)";
//String s = "select * from analog_data_ECONFUNC(LAST0MONTH,0,TIME_FORMAT_YYYYMM) where dtag=ECONFUNC(LAST1DAY,0,TIME_FORMAT_ABSDAY)";
//String s = "ECONFUNC(LAST0MONTH,0,TIME_FORMAT_YYYYMM) where dtag=ECONFUNC(LAST1DAY,0,TIME_FORMAT_ABSDAY)";
String s = "select * from analog_data_ECONFUNC(LAST0MONTH,0,TIME_FORMAT_YYYYMM) where dtag =ECONFUNC(LAST1DAY,0,TIME_FORMAT_ABSDAY) and 1=1";
System.out.println(getArray(s));
System.out.println(s);
//getArray(s);
}
public static String getArray(String n) {
String[] ss = n.split("ECONFUNC//(//s*//w*//s*,//s*//d*//s*,//s*//w*//s*//)");
int ssL = ss.length;
String result = "";
String temp = n;
for (int i = 0; i < ssL; i++) {
result += ss[i];
n = n.substring(ss[i].length(), n.length());
int end = 0;
if(i<ssL -1){
end = n.indexOf(ss[i+1]);
}else{
end = n.length();
}
temp = n.substring(0, end);
n = n.substring(temp.length(), n.length());
if(temp.length()>0){
result += exECONFUNC(temp);//解析ECONFUNC
}
}
return result;
}
public static String exECONFUNC(String s) {
s = s.replace("ECONFUNC(", "");
s = s.replace(")", "");
String[] ss = s.split(",");
return ss[1];
}
}