Gruntfile中的简单正则表达式

Tri*_*yen 15 glob gruntjs

我有以下几行Gruntfile.

js files: ['<%= yeoman.app %>/scripts/{,*/}*.coffee'],

有人可以这么善良告诉我什么{,*/}*意思吗?我知道它正在尝试匹配.coffee脚本文件夹中的所有文件,但我想知道它是如何做到的.

foo*_*cue 16

{,*/}场比赛的一个或脚本和.coffee文件之间的零个目录.在{}中,实际上有两个匹配的术语用逗号分隔.一个是空白的,由逗号左边的任何字符表示.一个是任意数量的字符和正斜杠.最终*匹配.coffee扩展名之前的文件名.

顺便说一句,这不是正则表达式,它是通用的.

  • 嗨Tri,你需要/的原因是在*中,*匹配所有字符除了实际的斜线.它以这种方式设置,例如,globbing`/*/*/*`只查找目录树中两个目录深度的文件.`{,*}/*`只匹配有斜杠的路径,其中`{,*/}*`使斜杠可选. (3认同)
  • 对于之前的评论是肯定的,对此之前的评论是否定的.`*/`表示"除了斜线之外的任何字符,重复多次,然后是斜线." 斜线必须在最后,因为这是正则表达式中的顺序.它没有"结合". (2认同)

Abs*_*ERØ 6

根据文件:

另外,因为这是JavaScript,所以您不仅限于JSON; 你可以在这里使用任何有效的JavaScript.如有必要,您甚至可以以编程方式生成配置.

它看起来像{,*/}*一个JSON匹配:

{
 '' = empty space matches no character
 , = or
 * = Any Characters (except slash) (wildcard)
 / = literal slash
}
* = Any Characters (except slash) (wildcard)
Run Code Online (Sandbox Code Playgroud)

更新 找到另一个资源:

全球模式

单独指定所有源文件路径通常是不切实际的,因此Grunt通过内置的node-glob和minimatch库支持文件名扩展(也称为globbing).

虽然这不是关于globbing模式的综合教程,但要知道在文件路径中:

*匹配任意数量的字符,但不是/

?匹配单个字符,但不是/

**匹配任意数量的字符,包括/,只要它是路径部分中的唯一内容

{}允许以逗号分隔的"或"表达式列表

!在模式的开头将否定匹配