2 回答
TA贡献1943条经验 获得超7个赞
glob
不支持正则表达式。使用glob
模式,只需计算所有文件和与您的模式匹配的文件的差异。您可以*
使用正确的数字?
或日期调整日期:
$result = array_diff(glob("/var/www/servername/directory/subdir_level1/*.csv"), glob("/var/www/servername/directory/subdir_level1/e-Calendar_Test-*.csv"));
如果您想要所有文件而不考虑扩展名*.csv
,请*.*
在第一个中替换glob
。
TA贡献1966条经验 获得超4个赞
我的猜测是,可能类似于,
^\/var\/www\/servername\/directory\/subdir_level1\/(?!e-Calendar_Test[^.\r\n]*).*\.csv$
这里可能需要。
测试
$re = '/^\/var\/www\/servername\/directory\/subdir_level1\/(?!e-Calendar_Test[^.\r\n]*).*\.csv$/m';
$str = '/var/www/servername/directory/subdir_level1/e-Calendar_Test2019-1-1-11-11-12.csv
/var/www/servername/directory/subdir_level1/e-Calendar_Test2019-1-1-11-11-12.csv
/var/www/servername/directory/subdir_level1/something_else.csv';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
var_dump($matches);
输出
array(1) {
[0]=>
array(1) {
[0]=>
string(62) "/var/www/servername/directory/subdir_level1/something_else.csv"
}
}
如果您想简化/修改/探索表达式,它已在regex101.com 的右上角面板中进行了说明。如果您愿意,您还可以在此链接中观看它如何与一些示例输入匹配。
- 2 回答
- 0 关注
- 140 浏览
添加回答
举报