package cn.com.burgeon.util; java
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern; sql
public class RegexUtil { 函數
//去掉註釋
public String takeNotes(String inString){
Pattern p = Pattern.compile("(?ms)('(?:''|[^'])*')|--.*?$|/\\*.*?\\*/");
return p.matcher(inString).replaceAll("$1");
}
//.fnc文件裏,分割存儲過程或函數
public List<String> spiltFncOrProc(String inString){
List<String> fncList=new ArrayList<String>();
Pattern p1 = Pattern.compile("(?ms)(create.+?end\\s*?\\w*?;)\\s*?/",Pattern.CASE_INSENSITIVE);
Matcher matcher=p1.matcher(inString);
//List<String> ls=new ArrayList<String>();
while(matcher.find())
fncList.add(matcher.group(1));
return fncList;
}
public String getFncName(String sqlStr){
String fncName = "";
Pattern p = Pattern
.compile(
"(?ms)create\\s+(?:or\\s+replace)?\\s+(?:PROCEDURE|FUNCTION)\\s+\"?(\\w+\\$?\\w+)\\s?(?:\\(.+\\))?",
Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(sqlStr);
if (m.find()) {
fncName = m.group(1);
}
return fncName;
}
} get