所以我需要一些关于如何捕获文件名及其结构的建议。让我解释一下。一个软件会将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年前面的最佳方式。有什么想法吗?
答案 0 :(得分:1)
最严格的方法是使用此正则表达式:
^(.*?)\d{4}-\d{2}-\d{4}_\d{2}_\d{2}_\d{6}\.mp3
结果将在第一个捕获组中。
正则表达式只假定日期的格式是固定的。即使名称包含一些数字,它也能正常工作。
或者,如果你可以假设日期时间的格式是一致的,你可以只做一个从(0,长度为29)的子字符串。