使用 glob 函数匹配文件名

Match file name with glob function

我有以下文件名:

foo.ext
foo-1.ext
foo-2.ext
foo-3.ext

当前代码

$name = "foo-[0-9].*";
glob($name as a $filename){
    echo $filename;
}

仅匹配

foo1-ext
foo2-ext
foo3-ext

但是没有foo.ext

如何修改我的 glob 以使其也匹配?

尝试

$name = "foo(-[0-9])?.*";

反正就是这么回事!

不是正则表达式,这是通配符。

两者差别很大

Globbing 是指在命令行中指定文件时使用的通配符。

所以在 globbing 中,表达式 foo* 表示 'foo' 后跟 ANY(或没有)字符。

而在正则表达式中,表达式 foo* 表示 'fo' 跟在 'o' 字符的任意数字(包括零次出现)之后。

Globbing 比正则表达式更具限制性。

关于获得你想要的东西的唯一方法是 "foo*.*"