たとえば、ドット付きの数値データを含む文字列変数があります$x = "OP/1.1.2/DIR";
。数値データの位置は、アプリケーション内で変更することにより、ユーザーの希望に応じて任意の状況で変更できます。また、スラッシュバーは他の文字で変更できます。ただし、点線の数値データは必須です。では、文字列から点線の数字データ(ここ1.1.2
では)を抽出するにはどうすればよいですか?
1432 次
1 に答える
5
正規表現を使用します:
(\d+(?:\.\d+)*)
壊す:
\d+
1桁以上を探す\.
リテラルの10進.
文字\d+
再び1つ以上の数字が続く(...)*
これは、このパターンの0回以上の出現に一致することを意味します(?:...)
これは、このグループの後方参照を作成しないようにエンジンに指示します(基本的に、参照を使用しないため、参照を作成しても意味がありません)
あなたはデータについて多くの情報を与えていないので、私は次の仮定をしました:
- データには常に少なくとも1つの数字が含まれます
- データには、ドットのない数字のみを含めることができます
- データには複数桁の数字が含まれる場合があります
- 数字自体には、任意の数のドット/数字のペアを含めることができます
これらの仮定のいずれかが正しくない場合は、正規表現を変更する必要があります。
使用例:
$x = "OP/1.1.2/DIR";
if (!preg_match('/(\d+(\.\d+)*)/', $x, $matches)) {
// Could not find a matching number in the data - handle this appropriately
} else {
var_dump($matches[1]); // string(5) "1.1.2"
}
于 2012-07-12T13:23:03.963 に答える