images/**/*.{png,svg}
images/**/*.+(png|svg)
当我测试它们时,它们通常会产生相同的结果。但是只需要确保它们完全相同即可。
答案 0 :(得分:0)
它们不是完全相同,并且它们都可能产生不同的结果-有关更多信息,请参考glob primer。它指出:
+(pattern|pattern|pattern)
匹配一个或多个出现的所提供模式。
您的第二种模式; images/**/*.+(png|svg)
,将匹配文件名末尾的{strong> 一次或多次出现 。
但是,您的第一个模式; png
仅在文件名末尾有svg
或images/**/*.{png,svg}
的 项时才匹配。>
示例:
假设我们有四个文件,分别为:
png
svg
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.svgsvg
将匹配所有四个文件路径,即:
foo.pngpngpng
images/**/*.+(png|svg)
images/quux/foo.svg
images/quux/foo.svgsvg
“当我测试它们时,它们通常会产生相同的结果。”
这是因为您不太可能拥有扩展名为images/quux/foo.png
或images/quux/foo.pngpngpng
的文件(即,当它多次出现.pngpng
或{{ 1}})。您也永远不会。
但是,我建议您使用第一个glob模式,即.svgsvgsvg
,因为它对于您实际想要匹配的内容更加简洁。