0

我很讨厌正则表达式。我有一个 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

如果我很接近,任何正则表达式大师都可以向我解释吗?谢谢!

4

1 回答 1

1

您还需要为 $matches 传递一个变量。

我简化了你的正则表达式。尝试这个:

$file = 'VERSION_3.7.1b.txt';
preg_match('/^VERSION_(.*?)\.txt/', $file, $matches);
echo $matches[1];
于 2012-09-14T03:58:22.413 回答