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

如何从分支名称字符串中仅提取ABV/ASD/WSX开头的工单编号?

精准提取工单编号的正则表达式优化

问题背景

你当前的流水线命令提取工单编号时,会意外包含分支前缀(比如fix/),需要仅提取ABV-XXX、ASD-XXX或WSX-XXX格式的纯工单编号(XXX为2-6位数字)。

原流水线命令

- TICKET_NAME="$(echo $BRANCH_NAME | sed -E 's~^(.*/){0,1}((ABV|ASD|WSX)-[0-9]{2,6})-.*~\2~I')"

测试用分支名称示例

fix/ABV-123-test-version
ABV-4233-test-another-thing
feature/-ASD-my-feature

原命令的问题

原正则里的^(.*/){0,1}会匹配分支开头的路径前缀(如fix/),并将前缀与工单编号一起纳入捕获范围,导致提取结果包含多余内容。

修正后的命令

- TICKET_NAME="$(echo $BRANCH_NAME | sed -E 's~.*\b((ABV|ASD|WSX)-[0-9]{2,6})\b.*~\1~I')"

优化说明

  • .*直接匹配编号前的所有内容(不管是路径前缀还是其他字符),直接跳过
  • \b是单词边界,确保捕获的是完整的工单编号,避免与前后字符粘连
  • 捕获组\1仅提取符合[ABV/ASD/WSX]-[2-6位数字]格式的核心部分
  • -I参数保持大小写不敏感匹配,若不需要可直接移除

特殊场景兼容

如果需要兼容像feature/-ASD-my-feature这种工单编号前多了单个-的分支,可以使用以下版本:

- TICKET_NAME="$(echo $BRANCH_NAME | sed -E 's~.*\b-?((ABV|ASD|WSX)-[0-9]{2,6})\b.*~\1~I')"

该版本会自动跳过编号前的单个-,提取出标准格式的工单编号,是否启用可根据实际业务需求决定。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:20:31