[英]Is there any difference between these 2 glob patterns?
images/**/*.{png,svg}
images/**/*.+(png|svg)
当我测试它们时,它们通常会产生相同的结果。 但是只需要确保它们完全相同即可。
它们并不完全相同,它们都可能会产生不同的结果-有关更多信息,请参见glob引物 。 它指出:
+(pattern|pattern|pattern)
匹配一个或多个出现的提供的图案。
您的第二种模式; images/**/*.+(png|svg)
,将匹配文件名末尾出现的一个或多个 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
或.svgsvgsvg
(即,当结尾处出现多个png
或svg
时)。 您也永远不会。
但是,我建议您使用第一个glob模式,即images/**/*.{png,svg}
,因为它对您实际想要匹配的内容更加简洁。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.