0

正規表現を使用したフレーズで複数の一致を見つけようとしています

このフレーズの複数のディメンションを一致させると、結果は単純になります。 ここでの作業サンプル

<?php
    preg_match_all("/(\d+\.\d)(x|cm)/", "120.0x140.0x215.0cm", $out);
    print_r($out);
?>

[0]=> array
    [0]=>120.0x
    [1]=>140.0x
    [2]=>215.0cm
[1]=> array
    [0]=>120.0
    [1]=>140.0
    [2]=>215.0
[2]=> array
    [0]=>x
    [1]=>x
    [2]=>cm

私が使用するのは$out[1]配列です

このパターンをコンテキストから分離しようとすると問題が発生します。これは最後の1つの値にのみ一致します。ここでの作業例

<?php
    preg_match_all("/<div>Dimensions: ((\d+\.\d)(x|cm))+<\/div>/", "<div>Dimensions: 120.0x140.0x215.0cm</div>", $out);
    print_r($out);
?>

[0]=> array
    [0]=><div>Dimensions: 120.0x140.0x215.0cm</div>
[1]=> array
    [0]=>215.0cm
[2]=> array
    [0]=>215.0
[3]=> array
    [0]=>cm

最初の例$out[2]と同じように、に複数の値が含まれていることを確認します$out[1]

ここに何が欠けていますか?正規表現でそれを行うことは可能ですか、それは可能かもしれないと思います。

4

1 に答える 1

0

これは、一致が 1 つしか見つからず、キャプチャ グループが複数回見つかった場合、最後の 1 つしか得られないためです。

考えられる解決策は、要素から is を抽出<div>し、最初に持っていた正規表現を使用することです。

于 2012-08-28T19:32:22.233 に答える