我正在尝试搜索和提取以特定关键字开头的句子,以及在/开头/结尾之间存在的关键字。目的是提取以'ALTER TABLE'开头的句子,这些句子要么嵌套在'GO'关键字之间,要么在它的开始或结束块上有GO。 GO关键字之间存在的句子数可以是任意的。这是我的示例文件和为实现它而编写的代码。
SampleFile.sql的内容
ALTER TABLE [dbo].[test1]
ADD [country] VARCHAR (30) NULL;
GO
alter procedure
some procedure code
GO
ALTER TABLE
something;
GO
PROCEDURE ALTER TABLE;
Drop table;
GO
ALTER TABLE [dbo].[test2]
ADD [continent] VARCHAR (30) NULL;
我的代码
$path = 'D:\Script'
$sampleFile = 'SampleFile.sql'
$search = "ALTER TABLE"
(GC $path\$sampleFile -Delimiter 'GO') -match "^$search*"
使用此代码,我只能获取第一组ALTER的内容,直到GO。如果避免插入符号正则表达式(^),则打印“ALTER TABLE”的所有实例(其中还将包括句子'PROCEDURE ALTER TABLE'直到下一个GO)。只需要以'ALTER TABLE'开头的句子。