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

Python正则表达式问题:如何提取路径的最后一段有效内容

Python正则表达式处理路径前缀,提取最后一段内容

现有路径前缀列表,需要提取每个路径的最后一段(去掉前面所有层级和末尾的斜杠),当前代码的正则表达式逻辑混乱,无法得到预期结果。

现有代码

import re

CommonPrefixes = [{'Prefix': 'BA/BMF/ABCDEJF/'}, {'Prefix': 'AG/CRBA_CORE/ABCDEJF/'}, {'Prefix': 'DC/KAT/pages-modified/'}]

res = [re.sub("(^\w+/)|(^\w+\/|/)|(/$)",'',x["Prefix"]) for x in CommonPrefixes]

print(res)
  • 实际输出:['BMFABCDEJF', 'CRBA_COREABCDEJF', 'KATpages-modified']
  • 期望输出:['ABCDEJF', 'ABCDEJF', 'pages-modified']

解决方案

方案1:直接匹配最后一段内容(更直观)

不用替换操作,直接定位最后一个斜杠之后、末尾斜杠之前的内容:

import re

CommonPrefixes = [{'Prefix': 'BA/BMF/ABCDEJF/'}, {'Prefix': 'AG/CRBA_CORE/ABCDEJF/'}, {'Prefix': 'DC/KAT/pages-modified/'}]

res = [re.search(r'[^/]+(?=/$)', x["Prefix"]).group() for x in CommonPrefixes]

print(res)

正则说明:

  • [^/]+:匹配任意非斜杠的字符序列,也就是我们要的最后一段内容
  • (?=/$):正向预查,确保匹配的内容后面紧跟着末尾的斜杠,避免误匹配中间路径

方案2:调整替换规则(保留re.sub写法)

把开头到最后一个斜杠的所有内容,以及末尾的斜杠,全部替换为空:

import re

CommonPrefixes = [{'Prefix': 'BA/BMF/ABCDEJF/'}, {'Prefix': 'AG/CRBA_CORE/ABCDEJF/'}, {'Prefix': 'DC/KAT/pages-modified/'}]

res = [re.sub(r'^.+/|/$', '', x["Prefix"]) for x in CommonPrefixes]

print(res)

正则说明:

  • ^.+\/:匹配从字符串开头到最后一个斜杠的所有内容(.+贪婪匹配任意字符,确保拿到最右侧的斜杠)
  • |/$:匹配末尾的斜杠
  • 两部分都替换为空后,剩下的就是目标内容

两种方案运行后都会输出预期结果:['ABCDEJF', 'ABCDEJF', 'pages-modified']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:13:22