【问题标题】:powershell -match 2 different parts of one URL and get thempowershell - 匹配一个 URL 的 2 个不同部分并获取它们
【发布时间】:2022-08-03 18:27:28
【问题描述】:

我想访问我使用 PowerShell (https://repo.anaconda.com/archive/Anaconda3-2022.05-Windows-x86_64.exe) 检索的 URL 的不同部分,-match 返回 true,第一个匹配是我可以正确获取的日期,第二部分是文件的名称 (Anaconda3- 2022.05-Windows-x86_64.exe) 我无法得到它, 有人可以帮我吗,在此先感谢 这是我的脚本

    $Uri = \'https://www.anaconda.com/products/distribution#Downloads\'
   ( $web = Invoke-WebRequest -Uri $uri)
   ( $downloadurl=$web.Links |Where-Object href -Like \"*_64.exe\" |Select-Object -First 1 | Select-Object -expand href )
   ( $downloadurl -match \"(\\d\\d\\d\\d.\\d{1,2}).*(Anaconda*.exe)\" )
   ($latestversion = \"$($Matches[1])\")
   ($FileName = \"$($Matches[2])\")

    标签: powershell pattern-matching string-matching invoke-webrequest


    【解决方案1】:

    解析文件名比构建正则表达式更简单。

    首先,在斜线/ 上拆分以获得字符串数组。由于文件名是最后一个,所以使用[-1] indexer 来获取它。像这样,

    $downloadurl.split('/')[-1]
    Anaconda3-2022.05-Windows-x86_64.exe
    

    现在您有了一个仅包含文件名的字符串,在破折号- 上拆分:

    $downloadurl.split('/')[-1].split('-')
    Anaconda3
    2022.05
    Windows
    x86_64.exe
    

    查找版本号然后是对结果数组的第二个元素的简单索引,并且文件名已经从先前的拆分操作中可用。

    【讨论】:

      猜你喜欢
      • 2019-01-11
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 2012-01-28
      • 2017-12-18
      • 1970-01-01
      • 2019-10-11
      相关资源
      最近更新 更多