ADF如何基于模式匹配提取文件名的指定前缀部分
文件名前缀提取方案
适配你现有场景的最简方案(和你原用的@表达式体系兼容)
核心逻辑是定位到文件名中最后一个下划线的位置,直接截取该位置之前的所有内容,无需硬编码长度,完美适配两类文件的提取需求:
- 正确表达式写法:
@substring(item().name, 0, lastIndexOf(item().name, '_')) - 效果验证:
- 处理
SMP_ACC_STG_20210987654.txt时,lastIndexOf定位到STG后的下划线位置,提取结果为SMP_ACC_STG - 处理
SMP_ACC_STG_BS_20210987654.txt时,lastIndexOf定位到BS后的下划线位置,提取结果为SMP_ACC_STG_BS
- 处理
兼容更复杂场景的正则方案
如果你使用的工具支持正则匹配,可以用以下规则提取,兼容性更强,即使后续前缀新增多段下划线也能正常生效:
- 正则规则:
^(.+?)_\d+\.txt$ - 说明:自动匹配
_数字.txt结构之前的所有内容作为目标前缀,不需要调整任何长度参数。
内容的提问来源于stack exchange,提问作者Nanda
相关产品推荐
相关产品推荐

