如何从带有Regex的字符串中获取两个变量

问题描述 投票:-1回答:2

我有以下字符串,我需要从Regex中提取两个变量。我一直在看教程,但没有得到我需要的结果。有人可以帮忙吗?

AWS-010062347904-uptree基-PROD-管理

我需要前两个连字符之间的12位数作为accountid(即010062347904)和第二个连字符之后的所有内容作为角色(即uptree-base-prod-admin)

regex variables capture
2个回答
0
投票

试试Regex:(?:[^-]*-)(?<accountId>\d{12})(?:[^-]*-)(?<role>.*)

Demo


0
投票

根据你在^AWS\-(?<accountid>\d+)评论中的模式,你从字符串的AWS-开始匹配^,然后你使用一个命名的捕获组accountId来捕获一个数字的1+倍。

您可以通过引用该命名捕获组来获取该accountId。要捕获角色,您可以使用另一个命名捕获组:

^AWS-(?<accountId>\d+)-(?<role>.*)$

Regex demo

如果你想要第一个连字符后面的数字,而不考虑字符串开头的内容,你可以在开头匹配0+次而不是连字符时使用否定字符类[^-]*

^[^-]*-(?<accountId>\d+)-(?<role>.*)$

Regex demo

© www.soinside.com 2019 - 2024. All rights reserved.