gpt4 book ai didi

regex - Powershell正则表达式匹配字符串末尾的vhd或vhdx

转载 作者:行者123 更新时间:2023-12-02 12:47:52 27 4
gpt4 key购买 nike

我是 powershell 的新手,我正在尝试编写一个脚本来复制以 vhdvhdx 结尾的文件

我可以像这样枚举文件目录:

$NEWEST_VHD = Get-ChildItem -Path $vhdSourceDir | Where-Object Name -match ".vhdx?" 

这将匹配

 foo.vhd
foo.vhdx

但是这也会匹配

foo.vhdxxxx

如何编写一个匹配项,匹配以 vhdvhdx 结尾的文件?

失败的尝试

Where-Object Name -match ".vhdx?" 
Where-Object Name -like ".vhdx?"
Where-Object Name -match ".[vhd]x?"
Where-Object Name -match ".[vhd]\^x?"

我调查过的资源

http://ss64.com/ps/syntax-regex.html
https://technet.microsoft.com/en-us/library/ff730947.aspx
http://www.regexr.com/

最佳答案

输入$在模式的末尾:

-match ".vhdx?$"

$在正则表达式模式中表示字符串的结尾。所以,上面的内容只会匹配 .vhdx?如果是在最后。请参阅下面的演示:

PS > 'foo.vhd' -match ".vhdx?$"
True
PS > 'foo.vhdx' -match ".vhdx?$"
True
PS > 'foo.vhdxxxx' -match ".vhdx?$"
False
PS >
<小时/>

此外,.字符在正则表达式模式中具有特殊含义:它告诉 PowerShell 匹配除换行符之外的任何字符。因此,您可能会遇到以下行为:

PS > 'foo.xvhd' -match ".vhdx?$"
True
PS >

如果不希望这样做,您可以添加 \之前.

PS > 'foo.xvhd' -match "\.vhdx?$"
False
PS >

这告诉 PowerShell 改为匹配文字句点。

关于regex - Powershell正则表达式匹配字符串末尾的vhd或vhdx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29521950/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com