Powershell从它的完整路径中获取DLL名称

时间:2015-12-22 21:15:18

标签: regex powershell

我有一个字符串“.... \ xyz \ abc \ 0.0 \ abc.def.ghi.jkl.dll”我试图将“abc.def.ghi.jkl.dll”的值变为变量使用powershell。

我对正则表达式和PS完全不熟悉,并且对如何完成这项工作感到困惑。我阅读了有关正则表达式的各种帖子,我无法获得任何工作

这是我的代码,

$str = "..\..\xyz\abc\0.0\abc.def.ghi.jkl.dll"

$regex = [regex] '(?is)(?<=\b\\b).*?(?=\b.dll\b)'
$result = $regex.Matches($str)
Write-Host $result

我想将“abc.def.ghi.jkl.dll”输入$ result。有人可以帮帮我吗

1 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式:

(?is)(?<=\\)[^\\]+\.dll\b

请参阅regex demo

无需使用Matches,只需使用-match(或Match)。

<强>解释

  • (?<=\\) - 确保在字符串
  • 中当前位置之前有一个\
  • [^\\]+ - 匹配\
  • 以外的1个或多个字符
  • \.dll\b - 匹配一个.符号,后跟三个字母dll,后跟一个尾随字边界。

Powershell的:

$str = "..\..\xyz\abc\0.0\abc.def.ghi.jkl.dll"
[regex]$regex = "(?is)(?<=\\)[^\\]+\.dll\b"
$match = $regex.match($str)  
$result = ""
if ($match.Success)  
{            
    $result = $match.Value
    Write-Host $result
}

enter image description here