我如何使用正则表达式从字符串中获取两个变量

时间:2019-03-22 20:13:14

标签: regex variables capture

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

AWS-010062347904-uptree-base-prod-admin

我需要前两个连字符之间的12位数字作为帐户ID(即010062347904) 以及第二个连字符后的所有内容(例如,uptree-base-prod-admin)

2 个答案:

答案 0 :(得分:0)

尝试使用正则表达式:(?:[^-]*-)(?<accountId>\d{12})(?:[^-]*-)(?<role>.*)

map

答案 1 :(得分:0)

在注释^AWS\-(?<accountid>\d+)中的模式中,您从字符串的开头AWS-匹配^,然后使用命名捕获组accountId进行捕获1倍以上的数字。

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

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

Regex demo

如果您希望第一个连字符后的数字而不考虑字符串开头的内容,则可以在开头匹配0+次而不使用连字符的情况下使用否定的字符类[^-]*

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

Regex demo