试图找到匹配模式的文件名的正则表达式挫折

时间:2012-09-14 03:54:45

标签: php regex

我吮吸正则表达式。我有一个PHP函数,将读取我的服务器上的文件名目录,我试图从一个特定的文件名中提取文件名数据,但我失败了。以下是我到目前为止的情况:

$file = 'VERSION_3.7.1b.txt';
$VersionNumber = preg_match('#^(VERSION_)[^\s]*\.\.[^\s]+(\.(txt))#', $file);

我试图让preg_match仅对以'VERSION_'开头并以'.txt结尾的文件返回true。中间的东西可能是各种各样的数字,字母,句号......这就是我想要回归的部分。所以在这种情况下,我希望$ VersionNumber最终设置为'3.7.1b'

其他会返回的文件名如下:

VERSION_3.txt  ->  3
VERSION_3.7.txt  ->  3.7
VERSION_3.7e.1.txt  ->  3.7e.1
VERSION_2012.09.13.3.7.1b.txt  ->  2012.09.13.3.7.1b
VERSION_3.7.20120913.txt  ->  3.7.20120913

任何正则表达式掌握在那里可以向我解释我是否接近?谢谢!

1 个答案:

答案 0 :(得分:1)

你也想为$ match传递一个变量。

我简化了您的RegExp。试试这个:

$file = 'VERSION_3.7.1b.txt';
preg_match('/^VERSION_(.*?)\.txt/', $file, $matches);
echo $matches[1];