我吮吸正则表达式。我有一个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
任何正则表达式掌握在那里可以向我解释我是否接近?谢谢!
答案 0 :(得分:1)
你也想为$ match传递一个变量。
我简化了您的RegExp。试试这个:
$file = 'VERSION_3.7.1b.txt';
preg_match('/^VERSION_(.*?)\.txt/', $file, $matches);
echo $matches[1];