我有一个字符串“.... \ 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。有人可以帮帮我吗
答案 0 :(得分:1)
您可以使用以下正则表达式:
(?is)(?<=\\)[^\\]+\.dll\b
请参阅regex demo
无需使用Matches
,只需使用-match
(或Match
)。
<强>解释强>:
(?<=\\)
- 确保在字符串\
[^\\]+
- 匹配\
\.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
}