无法将正则表达式模式表单文件解析为 powershell 中的变量

unable to parse regex pattern form file to the variable in powershell

我正在寻找文件夹名称是否符合 powershell 中的以下正则表达式模式。

  1. 检查前 4 个字母是 HOST。
  2. 根据 c:\shortnameslist.csv 中的短名称检查接下来的 3 或 4 个字母。
  3. 检查最后三个字母是否为 END。

#$shortname = (Import-Csv "c:\shortnameslist.csv")

$foldername = "FOLDERABSNAME"

$regex = '\b^(HOST)($shortname)(END)\b'

$文件夹名-匹配$regex

问题:

如何从正则表达式模式的 csv 列表中解析中间部分“短名称”。 谢谢

将 CSV 中的短名称值与正则表达式 'OR' 符号“|”相结合
转义任何可能的正则表达式特殊字符

$shortname = (Import-Csv -Path 'c:\shortnameslist.csv' | ForEach-Object { [regex]::Escape($_.shortname) }) -join '|'
$regex = "^HOST($shortname).*END$"

$foldername = 'HOSTIFS-blahblahEND'  # "FOLDERABSNAME"
$foldername -match $regex  # --> True

如果这个 returns $true,那么可以在 $matches[1]

中找到匹配的短名称

如果比较需要区分大小写,把-match改成cmatch