使用 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*.*"
。
我有以下文件名:
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*.*"
。