PowerShell将变量输出添加到正则表达式组

时间:2020-05-10 13:52:10

标签: powershell

$selected = 'File Name 123'
(Invoke-WebRequest -URI "$data").Content | 
Select-String -Pattern '(?:website data )(.*)(?:more data )([regex]::match($selected))(?: data)' -AllMatches | 
ForEach-Object { $_.Matches } | ForEach-Object { $_.Groups[2].Value }

如果我将([regex]::match($selected))替换为(.*),则会得到正确的结果,但是我需要将$ selected变量文本插入该组,以找到Groups [1]的正确值有可能,因为我的代码目前无法正常工作吗?

编辑

感谢Olaf我修复了脚本,现在可以正常工作

$regex = '(?:website data )(.*)(?:more data )' + "($selected)" + '(?: data)'
(Invoke-WebRequest -URI "$data").Content |
Select-String -Pattern $regex -AllMatches | 
ForEach-Object { $_.Matches } | ForEach-Object { $_.Groups[2].Value }

1 个答案:

答案 0 :(得分:0)

使用双引号而不是单引号来扩展变量,并使用$regex存储正则表达式组。 '($selected)'-> "($selected)"

$selected = 'File Name 123'
$regex = '(?:website data )(.*)(?:more data )' + "($selected)" + '(?: data)'
(Invoke-WebRequest -URI "$data").Content |
Select-String -Pattern $regex -AllMatches | 
ForEach-Object { $_.Matches } | ForEach-Object { $_.Groups[2].Value }
相关问题