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

Python正则无法正确捕获${project_version},求排查正则问题

正则表达式匹配问题分析

你的正则表达式re.match(r'collect_(.*)_(?:(?:foot|arm|height)\d+cm_)+.*' , string)匹配结果不符合预期,核心问题出在贪婪匹配的行为上:

  • (.*)是贪婪模式,会尽可能多地捕获字符,直到遇到最后一个能让后续正则片段(?:(?:foot|arm|height)\d+cm_)+匹配成功的下划线。这会导致捕获的${project_version}包含了本该属于后面${part}${length}cm_模式的内容(比如第一个字符串中,.*会把project_stage1_20220927_foot60cm_arm70cm都捕获进去,而非真正的项目版本部分)。

修正方案

将贪婪匹配改为非贪婪匹配,让捕获的内容在遇到第一个符合${part}${length}cm_模式的前缀下划线时就停止:

re.match(r'collect_(.*?)_(?:(?:foot|arm|height)\d+cm_)+.*' , string)

关键调整说明

  • 把(.*)替换为(.*?):非贪婪匹配会优先匹配最少的字符,一旦后续的_(?:(?:foot|arm|height)\d+cm_)片段能匹配成功,就停止捕获,这样就能精准拿到${project_version}部分。
  • 以第一个输入字符串为例,.*?会准确捕获project_stage1_20220927,正好是需要的项目版本内容,后续的下划线和foot60cm_会触发匹配终止。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:50:28