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

如何合并两个正则表达式,提取路径中最后斜杠后首个下划线前的字符串

问题原因

  • 你使用的|是正则的或匹配逻辑,仅会匹配两个模式中满足任意一个的结果,无法实现「先定位到最后一个/之后,再截取第一个_之前内容」的先后逻辑需求
  • 你写的(.*)^[^_]*_存在语法逻辑错误:^代表字符串起始位置,放在正则中间位置无法发挥你预期的截断作用
  • 两个单独的正则仅各自完成了一半的定位逻辑,没有做嵌套捕获,自然无法得到目标结果

正确解法

单正则直接捕获

用如下正则即可一次性提取目标内容:
.*\/([^_]*)_

逻辑解释:

  1. .*\/ 是贪婪匹配,会一直匹配到字符串中最后一个/的位置,过滤掉前面所有路径内容
  2. ([^_]*) 是捕获组,匹配任意非_的字符,就是你要的abcde内容
  3. 末尾的_锚定到文件名中第一个下划线的位置,确保捕获组只拿到下划线前的内容

代码示例(Python)

import re
target_str = "/users/test/test1/test2/abcde_482_fhsj_38575.txt"
match_res = re.search(r'.*\/([^_]*)_', target_str)
if match_res:
    print(match_res.group(1)) # 输出结果:abcde

其他可选思路

如果不想用复杂正则,也可以分两步处理:

  1. 先按/分割字符串,取最后一段(即完整文件名)
  2. 再按_分割文件名,取第一段即可得到abcde

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:24:00