正则从指定sql脚本中获取use后数据库名称(JAVA)
现在用的是://数据库名称可能有下划线,需要获取的可能是USETEST和USE[TEST]两种Patterncompile=Pattern.compile("(?i)us...
现在用的是:
//数据库名称可能有下划线,需要获取的可能是 USE TEST和USE [TEST]两种
Pattern compile = Pattern.compile("(?i)use\\s+\\[?\\s*(\\w+)\\s*\\]?");
StringBuilder sql = new StringBuilder("USE TEST").append("\r\n");
sql.append("GO").append("\r\n");
sql.append("CREATE TABLE TEST_TABLE(").append("\r\n");
sql.append("IS_USE VARCHAR(100) NOT NULL").append("\r\n");
sql.append(")");
Matcher matcher = compile.matcher(sql);
if(matcher.find()){
}
比如说上面的情况,所用的正则USE TEST也可以获取,IS_USE字段这也可以获取,有没有什么规则只能获取UST TEST这一段 展开
//数据库名称可能有下划线,需要获取的可能是 USE TEST和USE [TEST]两种
Pattern compile = Pattern.compile("(?i)use\\s+\\[?\\s*(\\w+)\\s*\\]?");
StringBuilder sql = new StringBuilder("USE TEST").append("\r\n");
sql.append("GO").append("\r\n");
sql.append("CREATE TABLE TEST_TABLE(").append("\r\n");
sql.append("IS_USE VARCHAR(100) NOT NULL").append("\r\n");
sql.append(")");
Matcher matcher = compile.matcher(sql);
if(matcher.find()){
}
比如说上面的情况,所用的正则USE TEST也可以获取,IS_USE字段这也可以获取,有没有什么规则只能获取UST TEST这一段 展开
1个回答
展开全部
在正则表达式加两个单词边界符,就不会匹配IS_USE字段了.
正则表达式 (?i)\buse\b\s+\[?\s*(\w+)\s*\]?
我给你个Java语言的例子,你看看吧.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PM{
public static void main(String args[]){
Pattern compile = Pattern.compile("(?i)\\buse\\b\\s+\\[?\\s*(\\w+)\\s*\\]?");
StringBuilder sql = new StringBuilder("USE TEST").append("\r\n");
sql.append("GO").append("\r\n");
sql.append("CREATE TABLE TEST_TABLE(").append("\r\n");
sql.append("IS_USE VARCHAR(100) NOT NULL").append("\r\n");
sql.append(")");
Matcher matcher = compile.matcher(sql);
while(matcher.find()){
System.out.println(matcher.group());
}
}
}
运行结果
USE TEST
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询