我正在尝试解析一个简单的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中的更新进行操作,但由于我的正则表达式技能非常有限,所以无法使其正常工作。
最佳答案
怎么样呢?
.*?\\bTABLE\\s+\\w+\\.(\\w+)\\b.*
Demo
它首先将
TABLE
关键字与.*?\\bTABLE\\s+
匹配。然后将DB_NAME.
与\\w+\\.
匹配。最后,它用T_NAME
匹配并捕获(\\w+)