Regex用于自托管翻新机器人获取linuxserver.io稳定图像

t2a7ltrp  于 2023-10-22  发布在  Linux
关注(0)|答案(1)|浏览(102)

我已经设置了自我更新的机器人。由于linuxserver.io有不同的创建docker标签的模式,我将切换到regex。

{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": [
    "config:base",
    "docker:enableMajor"
  ],
  "packageRules": [
    {
      "packagePatterns": ["^ghcr.io\\/linuxserver\\/"],
      "versionScheme": "regex:MYFANCYREGEX"
    }
  ]
}

但我需要你帮我把正则表达式安装好。我用unittest和example创建了一个regex 101-here

100.200.300
100.200.300.7068-ls170
v100.200.300-ls213
version-100.200.300
version-100.200.300-ls180
version-100.200.300.11111
100.200.300.7068-ls170
nigthly-100.200.300  -> not stable, no match
nightly-100.200.300.3604-ls587  -> not stable, no match
100.200.300-development -> not stable, no match
100.200.300-develop -> not stable, no match
100.200.300-nigthly -> not stable, no match

我无法排除包含->(?!或^)
我应该如何更改正则表达式以仅获取稳定版本和映像更新(ls/buildnumbers)

64jmpszr

64jmpszr1#

我会使用这个正则表达式(使用x标志以提高可读性):

/^

# Build information should not contain dev and nightly stuff:
(?!.*(nig(ht|th)ly|develop|development))

# Optional compatibility prefix "version-" or "v":
(?<compatibility>[a-z]*-|v)?

# Major, minor and patch numbers:
(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)

# Capture the optional build information:
(?:
  [\.-]?
  (?<build>.*)
)?

$/gmx

在这里更新您的regex101案例研究:https://regex101.com/r/KQZykk/4
如果你不能使用x标志,那么就使用我在这里添加的未注解版本:https://regex101.com/r/KQZykk/5
PS:为了从注解的正则表达式传递到未注解的正则表达式,我创建了一个小工具,你可以在这里访问:https://codepen.io/patacra/pen/wvQBxjq

相关问题