【问题标题】:Extract all git tag with the pattern digit.digit.digit提取所有带有 digit.digit.digit 模式的 git 标签
【发布时间】:2021-02-13 17:53:41
【问题描述】:

我有一个 git 标签列表:

0.0.1
0.0.1-rc.0
0.0.1-rc.1
0.1.0
0.10.0
0.10.1-rc.0
0.11.0
0.11.1-rc.0
0.12.0
0.12.1-rc.0
0.13.0
0.13.1-hotfix.0
0.13.1-rc.0
0.14.0
0.14.1-rc.0
0.15.0
0.15.1-rc.0
0.16.0
0.16.1-rc.0
0.17.0
0.17.1-rc.0
0.18.0
0.18.1-hotfix.0

我的目标是提取所有具有这种模式的标签:digit.digit.digit。这个标签是:

0.0.1, 0.1.0, 0.10.0 , 0.11.0, 0.12.0, 0.13.0, 0.14.0, 0.15.0, 0.16.0, 0.17.0, 0.18.0, 0.10.0

我已经尝试过这些表达方式,但都没有给我需要的结果:

git tag --list "[[:digit:]]\.[[:digit:]]\.[[:digit:]]" :
   0.0.1
   0.1.0

git tag --list "[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+" : no result

有什么想法吗?

【问题讨论】:

    标签: git filter tags glob


    【解决方案1】:

    git tag --list 接受 wildcard (glob) patterns,而不是正则表达式。所以试试

    git tag -l '[0-9]*.[0-9]*.[0-9]*'
    

    要使用正则表达式进行过滤,请使用 grep 等外部工具:

    git tag --list | grep -E "^[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+$"
    

    【讨论】:

    • git tag -l '[0-9]*.[0-9]*.[0-9]*' 不起作用,它给了我所有的标签
    • 我会尝试第二个,因为我正在使用此代码:github.com/concourse/git-resource/blob/master/assets/check#L158
    • 唉,glob 模式相当弱。使用grep。
    • 我改进了正则表达式:添加了^$锚点。
    • 它有效!非常感谢! tag_regex: "[[:digit:]]+\\.[[:digit:]]+\\.[[:digit:]]+"
    猜你喜欢
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 2017-03-10
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多