Select-多个字符串的字符串正则表达式

Select-String regex for multiple strings

我正在尝试从 curl 输出中提取最后一个条目以仅显示插件名称和版本。 不幸的是,我的命令惨遭失败。 这是我这边使用的命令

curl --silent https://jenkins-updates.cloudbees.com/download/plugins/blueocean-github-pipeline/ --ssl-no-revoke | findstr href |Select-String -Pattern "[0-9]/([^<]*)<" |Select-Object -last 1 | ForEach-Object { $_.Matches[0].Groups[1].Value }

输出它的给定是 blueocean-github-pipeline.hpi">1.25.3

我只想显示以下内容 blueocean-github-管道 1.25.3

并删除 ">,中间有一个制表符

我该怎么办?

提前致谢

您可以使用

... | Select-String -Pattern '\d/([^>]*)\.\w+">([^<]*)<' | `
Select-Object -last 1 | `
ForEach-Object { $_.Matches[0].Groups[1].Value + " " + $_.Matches[0].Groups[2].Value }

输出:

blueocean-github-pipeline 1.25.2

参见regex demo

详情:

  • \d/ - 一个数字和一个 / 字符
  • ([^>]*) - 第 1 组:除 > 字符
  • 之外的任何零个或多个字符
  • \. - 一个点
  • \w+ - 一个或多个单词字符
  • "> - 固定字符串
  • ([^<]*) - 第 2 组:除 < 字符
  • 之外的任何零个或多个字符
  • < - 一个 < 字符。

最后的结果是第1组+space+第2组的串联