【发布时间】:2015-11-24 22:01:07
【问题描述】:
我正在尝试提取位于文件中其他两个字符串之间的字符串 字符串是“USE”和“GO”
这就是我想出来的:
$importPath = "SOMEPATH"
$pattern = "(?<=\*\*USE\*\*)[\s\S]*(?=\*\*GO\*\*)"
Get-Content $importPath | Foreach {if ([Regex]::IsMatch($_, $pattern)) { $arr += [Regex]::Match($_, $pattern)}}
$arr
但是当执行此操作时,我什么也没得到
示例 SQL 脚本:
USE FIZNET
GO
DECLARE @Symbol_Type_Id SMALLINT
SELECT @Symbol_Type_Id = Symbol_Type_Id
FROM dbo.SymbolTypes
WHERE SymbolType = 'Indices - Asia'
UPDATE dbo.Currencies SET
Symbol_Type_Id = @Symbol_Type_Id
WHERE Currency = 'ASX'
GO
我希望 $arr 的值为“FIZNET”
【问题讨论】:
-
您是否有示例字符串和预期的输出进行比较?同样在您的示例中,您有
$path使用Get-Content $importPath。您确定正在读取源文件并且它包含应该匹配的行吗? -
感谢编辑,这两个地方都是 $importPath,我验证了文件在该位置,它是一个简单的 SQL 脚本 i
m trying to extract the Database name from , the string will be from the Type : USE [DB NAME] GO And i like to extract the DB NAME so i know where to execute the script (different DBs 位于不同的服务器) -
您的样本中没有星号
-
USE 和 GO 是否在同一行...它们是否在文件中重复多次。?请附上文件的清理样本。
-
添加示例,谢谢
标签: regex powershell