0

私は正規表現を吸います。サーバー上のファイル名のディレクトリを読み取るphp関数があり、特定の1つのファイル名からファイル名データを取得しようとしていますが、惨めに失敗しています。これが私がこれまでに持っているものです:

$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の変数も渡す必要があります。

RegExpを簡略化しました。これを試して:

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