繁体   English   中英

这两个glob模式之间有什么区别吗?

[英]Is there any difference between these 2 glob patterns?

images/**/*.{png,svg}
images/**/*.+(png|svg)

当我测试它们时,它们通常会产生相同的结果。 但是只需要确保它们完全相同即可。

它们并不完全相同,它们都可能会产生不同的结果-有关更多信息,请参见glob引物 它指出:

+(pattern|pattern|pattern)匹配一个或多个出现的提供的图案。

您的第二种模式; images/**/*.+(png|svg) ,将匹配文件名末尾出现一个或多个 pngsvg

但是,您的第一个模式; images/**/*.{png,svg} ,仅在文件名末尾出现 pngsvg时才匹配。

例:

假设我们有四个名为:

  • foo.svg
  • foo.svgsvg
  • foo.png
  • foo.pngpngpng

它们的路径是:

.
├── images
│   ├── ...
│   └── quux
│       ├── foo.svg
│       ├── foo.svgsvg
│       ├── foo.png
│       └── foo.pngpngpng

匹配结果

给定您的两个示例模式-您的第一个模式; images/**/*.{png,svg} ,将仅匹配以下两个路径:

  • images/quux/foo.svg
  • images/quux/foo.png

注意:文件foo.svgsvgfoo.pngpngpng的路径已被忽略

但是你的第二种模式; images/**/*.+(png|svg)将匹配所有四个文件路径,即:

  • images/quux/foo.svg
  • images/quux/foo.svgsvg
  • images/quux/foo.png
  • images/quux/foo.pngpngpng

“当我测试它们时,它们通常会产生相同的结果。”

这是因为您不太可能拥有一个扩展名为.pngpng.svgsvgsvg (即,当结尾处出现多个pngsvg时)。 您也永远不会。

但是,我建议您使用第一个glob模式,即images/**/*.{png,svg} ,因为它对您实际想要匹配的内容更加简洁。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM