代码之家  ›  专栏  ›  技术社区  ›  Mornor

正则表达式-任何遵循规则的东西

  •  -1
  • Mornor  · 技术社区  · 6 年前

    我有一个列表,看起来像:

    imagetest-14f66c4664-d8ngk
    image-net-kxpxc
    image-deploy-787d65b646-6bhtn
    

    我想建立一个正则表达式,匹配任何字符串后跟 任何一个

    • - 后跟5个字符或
    • - 接着是8到10个字符,接着是 和5个字符

    正则表达式应匹配所有:

    imagetest-14f66c4664-d8ngk
    image-net-kxpxc
    image-deploy-787d65b646-6bhtn
    waeve-net-xgw8m
    

    有没有一个简单的方法?

    2 回复  |  直到 6 年前
        1
  •  0
  •   AKX    6 年前

    https://regexr.com/3t88e )

    -([0-9a-f]+-)?([a-z0-9]{5})$
    

    基本上:

    • 一个破折号,
    • 一组可选的十六进制数,后跟破折号( ([0-9a-f]+-)?
    • 一组5个字符的字母数字标识符( ([a-z0-9]{5}) ),
    • 锚定在绳子的末端( $

    (但是请注意,这也将匹配 image-hello ,作为 hello 可能被误认为是5个字符的标识符。)

    编辑

    ^image(?:test|-net|-deploy)-([0-9a-f]+-)?([a-z0-9]{5})$
    

    所以字面上的“图像”,后面是 test -net -deploy ,然后是上述内容。

        2
  •  0
  •   Attie    6 年前

    ^(image(?:test|-net|-deploy))-(.+)$

    • ^ 锚定到线的开头
    • (...) 包围一个匹配的组
    • (?:...) 包围一个不匹配的组
    • | “允许多种选择之一
    • .+ 匹配任何字符( . )一次或多次( + )
    • $ 锚定到线的末端

    imagetest      14f66c4664-d8ngk
    image-net      kxpxc
    image-deploy   787d65b646-6bhtn
    

    https://regex101.com/r/0CphvX/3