我有这些 SQL DB 创建脚本,我想从中提取表名以创建 GRANT 访问。
提取实际名称不是问题:
^创建表 ([\w\.]+)[\r\n]+
但是,如果我只想Regex.Replace
从这些名称中创建 GRANT 语句(在第 1 组中),我会遇到所有与我想摆脱的不匹配的行。
例如
为了:
CREATE TABLE dbo.t_MyType
(
ID INTEGER PRIMARY KEY IDENTITY,
TypeName VARCHAR(16) NOT NULL
)
CREATE UNIQUE INDEX IndexMyType ON dbo.t_MyType (TypeName)
CREATE TABLE dbo.t_MyType2
(
ID INTEGER PRIMARY KEY IDENTITY,
TypeName VARCHAR(16) NOT NULL
)
CREATE UNIQUE INDEX IndexMyType ON dbo.t_MyType2 (TypeName)
我得到:
GRANT SELECT ON dbo.t_MyType TO db_read(
ID INTEGER PRIMARY KEY IDENTITY,
TypeName VARCHAR(16) NOT NULL
)
CREATE UNIQUE INDEX IndexMyType ON dbo.t_MyType (TypeName)
GRANT SELECT ON dbo.t_MyType2 TO db_read(
ID INTEGER PRIMARY KEY IDENTITY,
TypeName VARCHAR(16) NOT NULL
)
CREATE UNIQUE INDEX IndexMyType ON dbo.t_MyType2 (TypeName)
所以问题是:为了得到以下结果,我需要使用什么正则表达式和替换字符串对?
GRANT SELECT ON dbo.t_MyType TO db_read
GRANT SELECT ON dbo.t_MyType2 TO db_read