ZSH 通配符表达式限制重复支持?

Kei*_*itt 7 zsh regular-expression wildcards

有谁知道是否有办法将重复约束合并到 ZSH 通配符表达式中?

例如,要匹配所有以“ABC”开头且后跟一个或多个数字的文件,可以使用 grep one:

ls | grep -e "ABC[0-9]\+"
Run Code Online (Sandbox Code Playgroud)

有没有办法直接使用 ZSH glob 字符串来做到这一点?类似的东西:

ls "ABC[0-9]\+"
Run Code Online (Sandbox Code Playgroud)

我已经浏览了ZSH文档并在 Google 上搜索了类似的内容,但到目前为止还没有找到任何此类支持。

有谁知道这是否可能?

hee*_*ayl 6

是的,用于##匹配一个或多个[0-9]类似事件:

ABC[0-9]##
Run Code Online (Sandbox Code Playgroud)

这需要extendedglob设置,默认情况下。如果未设置,请先设置:

setopt extendedglob
Run Code Online (Sandbox Code Playgroud)

例子:

% print -l ABC*
ABC
ABC75475
ABC8
ABC90

% print -l ABC[0-9]##
ABC75475
ABC8
ABC90
Run Code Online (Sandbox Code Playgroud)