Как я могу получить две переменные из строки с помощью Regex - PullRequest
0 голосов
/ 22 марта 2019

У меня есть следующая строка, из которой мне нужно извлечь две переменные с помощью Regex. Я смотрю на учебники, но не получаю нужных мне результатов. Кто-нибудь может помочь?

AWS-010062347904-uptree база-прод-админ

Мне нужно 12 цифр между первыми двумя дефисами в качестве учетной записи (т. Е. 010062347904) и все после 2-го дефиса как роли (т.е. uptree-base-prod-admin)

Ответы [ 2 ]

0 голосов
/ 23 марта 2019

Из вашего шаблона в комментариях ^AWS\-(?<accountid>\d+) вы соответствуете AWS- с начала ^ строки, и после этого вы используете именованную группу захвата accountId для захвата 1+ раз цифры.

Вы можете получить этот accountId, ссылаясь на эту именованную группу захвата. Для захвата роли вы можете использовать другую именованную группу захвата:

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

Regex demo

Если вам нужны цифры после первого дефиса без учета того, что находится в начале строки, вы можете использовать класс отрицанных символов [^-]* в начале совпадения 0+ раз, а не дефис:

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

Regex demo

0 голосов
/ 22 марта 2019

Попробуйте Regex: (?:[^-]*-)(?<accountId>\d{12})(?:[^-]*-)(?<role>.*)

Демо

...