0

文字列からプロジェクト番号を抽出する必要があります。プロジェクト番号が固定されていれば簡単でしたが、P.XXXXXP XXXXXまたはのいずれかになりますPXXXXX

私が使用できるような簡単な機能はありpreg_matchますか?もしそうなら、私の正規表現は何ですか?

4

6 に答える 6

1

確かにあります - これがより大きな文字列の一部である場合、たとえば"The project (P.12345) is nearly done"、次を使用できます。

preg_match('/P[. ]?(\d{5})/',$str,$match);
$pnumber = $match[1];

それ以外の場合、文字列が常に文字列になる場合はP.12345、次を使用できます。

preg_match('/\d{5}$/',$str,$match);
$pnumber = $match[0];

一番上の例のより明示的な一致を好むかもしれませんが.

于 2013-10-04T08:33:44.580 に答える
1

これを試して:

if (preg_match('#P[. ]?(\d{5})#', $project_number, $matches) {
    $project_version = $matches[1];
}

正規表現の視覚化

Debuggex デモ

于 2013-10-04T08:39:12.423 に答える
1

プロジェクト番号は 5 桁のうちの 4 桁だとおっしゃいました。

preg_match('/P[. ]?(\d{4,5})/', $tring, $m);
$project_number = $m[1];
于 2013-10-04T08:53:36.403 に答える
0

私はこの種の正規表現を使用します:/.*P[ .]?(\d+).*/

ここにいくつかのテスト行があります:

$string = 'This is the P123 project, with another useless number 456.';
$project = preg_replace('/.*P[ .]?(\d+).*/', '$1', $string); 
var_dump($project);

$string = 'This is the P.123 project, with another useless number 456.';
$project = preg_replace('/.*P[ .]?(\d+).*/', '$1', $string);
var_dump($project);

$string = 'This is the P 123 project, with another useless number 456.';
$project = preg_replace('/.*P[ .]?(\d+).*/', '$1', $string);
var_dump($project);
于 2013-10-04T08:38:36.477 に答える