gpt4 book ai didi

带有可选字符和最小/最大长度的正则表达式匹配模式

转载 作者:行者123 更新时间:2023-12-03 21:07:24 25 4
gpt4 key购买 nike

匹配以 X 开头,后跟 3 到 6 个大写单词或数字,必须至少包含一个字母,并且可以有可选的破折号 -。
匹配示例:

XABC
XA-BC8D
X-ABC
XB72D-
不匹配示例:
X123      //no letters
XAB //too short
XABC-123 //too long
XA--BC //too many -
我试过 X(?=.{3,6}$)[A-Z0-9]*-?[A-Z0-9]* ,但它有很多问题。它可以匹配类似 X--- 的内容.正则表达式应该与 grep 兼容。

最佳答案

您可以将此正则表达式与 gnu grep 一起使用使用 -P (PCRE):

grep -P '^X(?!([^-]*-){2})(?=[^A-Z]*[A-Z])[A-Z\d-]{3,6}$' file

XABC
XA-BC8D
X-ABC
XB72D-
RegEx Demo
正则表达式详情:
  • ^ : 开始
  • X :匹配字母X
  • (?!([^-]*-){2}) :否定前瞻断言前面的连字符永远不会超过一个
  • (?=[^A-Z]*[A-Z]) :正向前瞻以断言前面至少存在一个大写字母
  • [A-Z\d-]{3,6} : 匹配大写字母或数字或 - 3到6次
  • $ : 完

  • 如果您没有 gnu grep安装后你可以考虑这个 awk :
    awk -F- 'NF<3 && /^X[A-Z0-9-]{3,6}$/ && /.[A-Z]/' file

    XABC
    XA-BC8D
    X-ABC
    XB72D-

    关于带有可选字符和最小/最大长度的正则表达式匹配模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65686877/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com