我正在尝试解析一个简单的DDL语句。首先,我尝试提取表名。语法将类似于'CREATE TABLE DB_NAME.TABLE_NAME‘
到目前为止,我得到了以下信息:
String line = "CREATE TABLE DB_NAME.T_NAME";
String pattern = ".*?\\bTABLE\\s+(\\w+)\\b.*";
System.out.println(line.replaceFirst(pattern, "$1"));这让我又回到了"DB_NAME“。我怎么才能让它把"T_NAME“还给我呢?
我尝试在this answer中跟踪更新,但我不能让它工作,可能是因为我的正则表达式技能非常有限。
发布于 2019-07-02 06:07:31
下面是一小段代码(使用命名捕获组):
String line = "CREATE TABLE DB_NAME.T_NAME";
Pattern pattern = Pattern.compile("CREATE TABLE (?<database>\\w+)\\.(?<table>\\w+)");
Matcher matcher = pattern.matcher(line);
if (matcher.matches()) {
String database = matcher.group("database"); // DB_NAME
String table = matcher.group("table"); // T_NAME
}https://stackoverflow.com/questions/56842894
复制相似问题