You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则提取AWS策略ARN末尾的策略名并删除其他内容

用正则提取AWS IAM策略ARN最后一段策略名

问题

手里有一批AWS IAM策略ARN,想提取每个ARN里最后一个斜杠后面的策略名。之前用(?<=/).*,结果把第一个斜杠后面的所有内容都提出来了——比如带aws-service-role路径的ARN,会把aws-service-role/AWSSupportServiceRolePolicy全拿出来,这不符合需求,得找个正则解决。

可行的正则方案

方案一:精准匹配最后一段

用正则表达式 (?<=/)[^/]+$,拆解逻辑:

  • (?<=/):确保匹配内容的前面是一个斜杠
  • [^/]+:只匹配非斜杠的字符,避免把中间路径包含进来
  • $:锚定到字符串结尾,保证取的是最后一个斜杠后的内容

方案二:贪婪匹配后捕获目标

用正则 .*/([^/]+),逻辑是:

  • .*/:贪婪模式下会直接匹配到字符串里最后一个斜杠为止(贪婪特性会尽可能多匹配内容)
  • ([^/]+):用捕获组把最后一个斜杠后面的非斜杠内容单独抓出来

测试效果

拿复杂ARN arn:aws:iam::aws:policy/aws-service-role/AWSSupportServiceRolePolicy 测试,两个方案都会精准提取出 AWSSupportServiceRolePolicy,完全符合需求。

实际代码示例(Python)

import re

# 示例ARN列表
arn_list = [
    "arn:aws:iam::aws:policy/AmazonEC2FullAccess",
    "arn:aws:iam::aws:policy/IAMFullAccess",
    "arn:aws:iam::s:policy/CloudWatchAgentServerPolicy",
    "arn:aws:iam::aws:policy/aws-service-role/AWSSupportServiceRolePolicy",
    "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
]

# 方案一提取
pattern1 = re.compile(r'(?<=/)[^/]+$')
for arn in arn_list:
    print(pattern1.findall(arn)[0])

# 方案二提取
pattern2 = re.compile(r'.*/([^/]+)')
for arn in arn_list:
    match_result = pattern2.search(arn)
    if match_result:
        print(match_result.group(1))

内容的提问来源于stack exchange,提问作者Ramesh Thiyagarajan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 19:45:34