gpt4 book ai didi

RegEx 使用量词查找多个匹配项

转载 作者:行者123 更新时间:2023-12-03 00:49:35 26 4
gpt4 key购买 nike

我有这个 PowerShell 代码:

$uri = "http://charts.spotify.com/api/tracks/most_streamed/au/daily/latest"
$ContentType = "application/json"
$postblog = (Invoke-WebRequest -Uri $uri).Content -match 'track_name\S:\S(.*?)",'
$matches[1]

当我运行它时,我得到了这个结果:
FourFiveSeconds

问题是,我知道除了这首歌之外还有更多的歌曲。而且我知道我正在使用的匹配文本字符串“ track_name ”不止一次存在。如何更改我的 RegEx 以匹配它可以找到的每个匹配项?换句话说,预期的输出将是多个匹配,允许我列出所有歌曲,例如 $matches[1] , $matches[2] , $matches[3] , $matches[4] , ETC。

最佳答案

由于您使用的是 Invoke-WebRequest ,我假设您使用的是 Powershell v4.0。因此,您可以使用 ConvertFrom-Json在收到的数据上并对其进行迭代,而不是使用正则表达式解决方案:

$uri = "http://charts.spotify.com/api/tracks/most_streamed/au/daily/latest"
$ContentType = "application/json"
$postblog = (Invoke-WebRequest -Uri $uri).Content | ConvertFrom-Json

现在,整个 tracks数据在 $postblog.tracks 内可用大批。

遍历它们以获得 track_url年代:
Foreach( $track in $postblog.tracks ) {
Write-Output $track.track_url
}

编辑

显然,您可以简单地使用:
Write-Output $postblog.tracks.track_url

而不是 Foreach代码块。感谢 @PetSerAl为了那个原因 :)

关于RegEx 使用量词查找多个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33050997/

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