V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Euthpic
V2EX  ›  正则表达式

我想把 pom.xml 里面的 SNAPSHOT 版本替换成正式的,这个正则该怎么写呢?

  •  
  •   Euthpic · 2021-05-26 22:55:00 +08:00 · 1045 次点击
    这是一个创建于 1058 天前的主题,其中的信息可能已经有所发展或是发生改变。

    pom.xml:

    <a-api>1.0.0</a-api>
    <b-api>1.0.0-test-SNAPSHOT</b-api>
    

    想把'<b-api>1.0.0-test-SNAPSHOT</b-api>'替换成'<b-api>1.0.0</b-api>' 然后我写了这么个正则:

    sed -i -s 's/-(.*?)-SNAPSHOT<\/b-api>/<\/b-api>/'
    

    但是匹配到的是'-api>1.o-test-SNAPSHOT</b-api>',最先匹配原则覆盖了最短匹配. 另外一个思路是先匹配到对应的 tag,里面的 version 根据分隔符'-'切割成三部分,判断第三部分是否为 SNAPSHOT,若是则把第二部分和第三部分删掉. 但是不会写对应的正则,大家有什么好的想法吗?

    8 条回复    2021-05-31 12:57:57 +08:00
    Euthpic
        1
    Euthpic  
    OP
       2021-05-26 23:00:38 +08:00
    pom 的格式是<project>version-branch-SNAPSHOT</project>,要替换成<project>version</project>
    gstqc
        2
    gstqc  
       2021-05-26 23:18:48 +08:00
    `sed -i 's/-test-SNAPSHOT//g' pom.xml`
    Euthpic
        3
    Euthpic  
    OP
       2021-05-26 23:27:34 +08:00
    @gstqc 可惜 test 是无法确定的分支名.
    fannas
        4
    fannas  
       2021-05-27 01:35:12 +08:00 via iPhone
    我猜你打算 cicd 做 release 。可以用 agent 注入版本号哈
    oott123
        5
    oott123  
       2021-05-27 07:50:32 +08:00 via Android
    你把 <b-api> 也加进去不就完了。。
    hexiaowu1993
        6
    hexiaowu1993  
       2021-05-27 14:11:35 +08:00
    这个有插件的,尽量别自己写正则。
    idea 搜索 maven version 插件 或者是在 maven plugins 引入 versions-maven-plugin
    he1a2s0
        7
    he1a2s0  
       2021-05-28 03:16:05 +08:00
    branch 里面没有-的话,可以简单的把 (.*?) 换成 [^-]\+
    acr0ss
        8
    acr0ss  
       2021-05-31 12:57:57 +08:00
    若 version 由 \w (字母数字下划线) 构成,则可如此匹配:

    (-\w+)?-SNAPSHOT
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1351 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:41 · PVG 07:41 · LAX 16:41 · JFK 19:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.