Regex Powershell搜索到特定关键字
我试图搜索和提取以特定关键字开头的句子,以及存在于/开始/结束于关键字之间的句子。其目的是提取以“ALTER TABLE”开头的句子,这些句子要么嵌套在“GO”关键字之间,要么包含GO的begin或end块。GO关键字之间存在的句子数可以是任意的。这是我的示例文件和为实现它而编写的代码 SampleFile.sql的内容Regex Powershell搜索到特定关键字,regex,powershell,search,Regex,Powershell,Search,我试图搜索和提取以特定关键字开头的句子,以及存在于/开始/结束于关键字之间的句子。其目的是提取以“ALTER TABLE”开头的句子,这些句子要么嵌套在“GO”关键字之间,要么包含GO的begin或end块。GO关键字之间存在的句子数可以是任意的。这是我的示例文件和为实现它而编写的代码 SampleFile.sql的内容 ALTER TABLE [dbo].[test1] ADD [country] VARCHAR (30) NULL; GO alter procedure
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的内容,直到开始。如果避免使用插入符号正则表达式(^),则会打印“ALTER TABLE”的所有实例(在下一个GO之前,还将包括“PROCEDURE ALTER TABLE”一句)。只需要以“ALTER TABLE”开头的句子 您只需要多行修改器:
(GC $path\$sampleFile -Delimiter 'GO') -match "(?m)^$search*"
^^^
这将使^
匹配一行的开头,而不是整个字符串