$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 }
答案 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 }