首页 > 解决方案 > 用于从 SQL CREATE TABLE 语句中提取表信息的正则表达式

问题描述

考虑以下查询:

CREATE TABLE "albums" ( [AlbumId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
[Title] NVARCHAR(160) NOT NULL )

我试图提取表名之后的所有内容(在这种情况下为专辑),即语句:

( [AlbumId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, [Title] NVARCHAR(160) NOT NULL )

我想这样做是因为我想准确地复制表在创建时的编写方式。问题是表名可以像这样在其名称中包含括号/特殊字符(还要注意表名后没有空格):

CREATE TABLE "al(b+?u(ms"( [AlbumId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
[Title] NVARCHAR(160) NOT NULL )

它们也可以没有双引号,但它们不会有任何特殊字符,例如:

CREATE TABLE albums ( [AlbumId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
[Title] NVARCHAR(160) NOT NULL )

在这些情况下,如何使用正则表达式提取表名后括号后的表信息?

标签: sqlregexsqlite

解决方案


推荐阅读