预匹配文件名与连字符

Posted

技术标签:

【中文标题】预匹配文件名与连字符【英文标题】:Preg-match filenames with hypens 【发布时间】:2014-10-11 12:59:06 【问题描述】:

如何在 php 中使用 preg_match 检查文件名?

文件名 = 2.pdf

如果另一个文件被称为2-2.pdf2-3.pdf,它也应该匹配。

这是hypen之前的Id。它不需要检查.pdf文件扩展名。

$id = 2;
$list = scandir("D:/uploads/");
$list = preg_grep("/^".$id."$/", $list);

foreach ($list as $file)

    echo $file . "<br />";

【问题讨论】:

【参考方案1】:

怎么样:

/^$id(?:-\d+)?/

说明:

/        : delimiter
^        : begining of strig
$id      : the id defined earlier
(?:      : begining of non capture group
    _    : a dash
    \d+  : one or more digits
)?       : end of group, optional
/        : delimiter

用法:

$list = preg_grep("/^$id(?:-\d+)?/", $list);

【讨论】:

【参考方案2】:

使用这个正则表达式

/^2[-.]/

演示:http://regex101.com/r/aJ7cK0/1

【讨论】:

以上是关于预匹配文件名与连字符的主要内容,如果未能解决你的问题,请参考以下文章

Java如何从文件中打印与给定模式匹配的所有字符串?

如何在 Java 中查找与通配符字符串匹配的文件?

linux学习---通配符与正则表达式

数据预操作

Linux 文件通配符与命令行扩展

系统运维系列 之CSV文件读取时内容中包含逗号的处理方法