捕获文件名和匹配的最佳建议

时间:2014-01-26 19:50:19

标签: php regex preg-replace preg-match preg-match-all

所以我需要一些关于如何捕获文件名及其结构的建议。让我解释一下。一个软件会将mp3文件上传到目录中。该mp3文件将始终保持与此非常相似的格式:

Station-[_A]_Warren_2014-01-2614_40_01_377000.mp3

右边的任何内容,包括2014年,通常都会保持不变。当然,Year-Month-DayHour-Minute-Second-Milliseconds.mp3会随着时间的推移而变化。但我需要做的就是抓住2014年(年)前面的一切,并尽可能地抓住这一切。

我可能会爆炸“_”但是这根本不会起作用,因为如果我看看$ array [x] = 2014,那么2014年的位置可能会有所不同。有一次它可能位于第2位,或者下一次可能位于第8位,这取决于用户如何构建其文件名,因为软件会将特殊字符重写为下划线。

所以我需要弄清楚抓住2014年前面的最佳方式。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

最严格的方法是使用此正则表达式:

^(.*?)\d{4}-\d{2}-\d{4}_\d{2}_\d{2}_\d{6}\.mp3

结果将在第一个捕获组中。

正则表达式只假定日期的格式是固定的。即使名称包含一些数字,它也能正常工作。


或者,如果你可以假设日期时间的格式是一致的,你可以只做一个从(0,长度为29)的子字符串。