首页 > 解决方案 > 字符串和正斜杠后面的字符串的正则表达式

问题描述

我正在尝试通过 az cli 提取 Azure 中的资源组名称。

某个资源组的完整路径如下所示:

/subscriptions/b049-1234-1256-125456-125/resourceGroups/Test_ResourceGroup

我试图只从完整字符串(存储在变量中)中提取“Test_ResourceGroup”,所以我认为代码类似于

$scope = /subscriptions/b049-1234-1256-125456-125/resourceGroups/Test_ResourceGroup
$resourcegroup = $scope -match 'regex'

但我在正则表达式方面很糟糕,而且并不擅长。额外的挑战是有时资源名称后面有更多的字符串或整数,例如

/subscriptions/b049-1234-1256-125456-125/resourceGroups/Test_ResourceGroup/specificnameofresource/blahblah

但同样,我只想要资源组名称。

标签: regexpowershell

解决方案


虽然纯正则表达式解决方案可能更快,但这更简单且更容易理解/修改。好吧,这是给我的。[咧嘴笑]

巧妙的是,final.Split()默默地失败,所以它适用于“字符串结尾”和字符串中的任何位置。

$TestList = @(
    '/subscriptions/b049-1234-1256-125456-125/resourceGroups/Test_ResourceGroup/specificnameofresource/blahblah'
    '/subscriptions/b049-1234-1256-125456-125/resourceGroups/ResourceGroupZiggity'
    )

foreach ($TL_Item in $TestList)
    {
    ($TL_Item -split 'resourcegroups/')[-1].Split('/')[0]
    }

输出 ...

Test_ResourceGroup
ResourceGroupZiggity

推荐阅读