GlobIterator 正则表达式
GlobIterator RegEx
我有一个末尾带有通配符的字符串,但我不知道该字符串会有多少个字符。如何使用 GlobIterator 和 RegexIterator 来匹配相似的文件名?第二个匹配 returns 目录中的所有文件,但我不希望这样。我需要一个正确的正则表达式。我不想匹配扩展名之前的最后一组(例如文件大小为 250M、500M 等)
$iterator = new GlobIterator($this->srcDir . $identifier . ".*");
匹配
/var/www/import/2014047-0216/YukonGold.A2014047.1620.721.*
这是 returns 正确的文件。
/var/www/import/2014047-0216/YukonGold.A2014047.1620.721.250m.jpg
/var/www/import/2014047-0216/YukonGold.A2014047.1620.721.500m.jpg
匹配
/var/www/import/2014047-0216/YukonGold.A2014047.1620.*
Returns 个文件:
/var/www/import/2014047-0216/YukonGold.A2014047.1620.250m.jpg
/var/www/import/2014047-0216/YukonGold.A2014047.1620.500m.jpg
/var/www/import/2014047-0216/YukonGold.A2014047.1620.721.250m.jpg
/var/www/import/2014047-0216/YukonGold.A2014047.1620.721.500m.jpg
预期输出
/var/www/import/2014047-0216/YukonGold.A2014047.1620.721.*
/var/www/import/2014047-0216/YukonGold.A2014047.1620.721.250m.jpg
/var/www/import/2014047-0216/YukonGold.A2014047.1620.721.500m.jpg
/var/www/import/2014047-0216/YukonGold.A2014047.1620.*
/var/www/import/2014047-0216/YukonGold.A2014047.1620.250m.jpg
/var/www/import/2014047-0216/YukonGold.A2014047.1620.500m.jpg
您应该在 RegexIterator
:
中使用它
// Notice that there is no expansion pattern used here
$path = '/var/www/import/2014047-0216/YukonGold.A2014047.1620.';
$re = '~\Q' . $path . '\E(?:[^.]+\.)?\w+$~';
$regexIterator = new RegexIterator(new GlobIterator("{$path}*"), $re);
foreach ($regexIterator as $filename) {
echo $filename . "\n";
}
我有一个末尾带有通配符的字符串,但我不知道该字符串会有多少个字符。如何使用 GlobIterator 和 RegexIterator 来匹配相似的文件名?第二个匹配 returns 目录中的所有文件,但我不希望这样。我需要一个正确的正则表达式。我不想匹配扩展名之前的最后一组(例如文件大小为 250M、500M 等)
$iterator = new GlobIterator($this->srcDir . $identifier . ".*");
匹配
/var/www/import/2014047-0216/YukonGold.A2014047.1620.721.*
这是 returns 正确的文件。
/var/www/import/2014047-0216/YukonGold.A2014047.1620.721.250m.jpg
/var/www/import/2014047-0216/YukonGold.A2014047.1620.721.500m.jpg
匹配
/var/www/import/2014047-0216/YukonGold.A2014047.1620.*
Returns 个文件:
/var/www/import/2014047-0216/YukonGold.A2014047.1620.250m.jpg
/var/www/import/2014047-0216/YukonGold.A2014047.1620.500m.jpg
/var/www/import/2014047-0216/YukonGold.A2014047.1620.721.250m.jpg
/var/www/import/2014047-0216/YukonGold.A2014047.1620.721.500m.jpg
预期输出
/var/www/import/2014047-0216/YukonGold.A2014047.1620.721.*
/var/www/import/2014047-0216/YukonGold.A2014047.1620.721.250m.jpg
/var/www/import/2014047-0216/YukonGold.A2014047.1620.721.500m.jpg
/var/www/import/2014047-0216/YukonGold.A2014047.1620.*
/var/www/import/2014047-0216/YukonGold.A2014047.1620.250m.jpg
/var/www/import/2014047-0216/YukonGold.A2014047.1620.500m.jpg
您应该在 RegexIterator
:
// Notice that there is no expansion pattern used here
$path = '/var/www/import/2014047-0216/YukonGold.A2014047.1620.';
$re = '~\Q' . $path . '\E(?:[^.]+\.)?\w+$~';
$regexIterator = new RegexIterator(new GlobIterator("{$path}*"), $re);
foreach ($regexIterator as $filename) {
echo $filename . "\n";
}