我正在尝试解析一个简单的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+)

10-05 23:58