在这种情况下如何使用正则表达式进行字符串格式化

How can I utilize regular expressions for string formating in this scenario

我正在编写一个 python 脚本来验证 AWS IAM 策略并想知道如何在这个用例中使用正则表达式。

例如我有这个政策:

{'Action': ['s3:PutObject', 'kms:GenerateKey'],
'Effect': 'Allow'
'Resource': ['arn:aws:kms:us-west-2:<account_id>:key/*',
'arn:aws:s3:::bucket]}

然后我有这个代码:

for value in policy:
    Resource = value['Resource']
    for resource in Resources:
        if resource == 'arn:aws:s3:::<bucket>'
        return True

如果有多个 S3 操作被发送到策略,我想做这样的事情....

if resource =='arn:aws:s3:::<regular expression>' 

正则表达式为任意字符和整数。这可能吗?

你可以做到:

import re
if re.match(r'arn:aws:s3:::.*$', resource):
    ...

.表示任意字符,*表示零个或多个,$表示到字符串结尾。

如果您只需要字母和数字而不是符号,您可以将 . 替换为 [a-zA-Z0-9]

如果您想要至少一个字符(一个或多个),您也可以将 * 替换为 +