Получение значений тега aws и сравнение с проблемой регулярного выражения - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь вытащить коды бюджета из тегов на ресурсах aws У меня есть следующий код:

for resource in awsresources["ResourceTagMappingList"]:
        resourcearn = resource["ResourceARN"]
        for tags in resource["Tags"]:
            if tags['Key'] == 'Budget':
                budgetCode = tags['Value']
                pattern = "^[\d]{3}-[\d]{4}-[\d]{1}-[\d]{6}-[\d]{4}-[\d]{4}-[\d]{4}$"
                result = re.search(pattern, budgetCode)

                if result == None:
                    print(resourcearn + " Contains an non-valid budget code tag.  The tag value is " + tags['Value'] )

Когда код запускается, он продолжает возвращаться, так как один тег возвращается как недействительный 070 -0702-1-000000-5309-7000-0000. Затем я go и запускаю его локально только с этим кодом для тестирования, и он, кажется, возвращается к поиску и возвращает его как действительное число. Что-то мне не хватает, почему мой лямбда-код дает разные результаты?

budgetCode = "070-0702-1-000000-5309-7000-0000"
pattern = "^[\d]{3}-[\d]{4}-[\d]{1}-[\d]{6}-[\d]{4}-[\d]{4}-[\d]{4}$"
result = re.search(pattern, budgetCode)

if result == None:
    print("Not a valid budget code") 

1 Ответ

0 голосов
/ 05 мая 2020

Это регулярное выражение ^[\d]{3}-[\d]{4}-[\d]{1}-[\d]{6}-[\d]{4}-[\d]{4}-[\d]{4}$
совпадает с этой числовой строкой "070-0702-1-000000-5309-7000-0000"
так что неправильная строка состоит в том, что в строке есть некоторые ведущие завершающие (белые) пробелы.
Для теста вы можете добавить кавычки вокруг это когда он выводится.
Для другого теста удалите якоря в регулярном выражении.

Также может быть, что один из символов не в ASCII, которым должен быть
, так что это похоже на двойник, и то, что напечатано, может быть переведено
в ascii драйвером консоли.

...