0

私はPCREパターンを持っています:

$pattern = '/(.*)(\[(heading)\](.*)\[\/\3\])(.*)/Us'

そしてこのテキスト

$text ='Millipore Milli-Q システム (米国マサチューセッツ州ビレリカ) からの蒸留水。
HPLC グレードのメタノールおよびアセトニトリルは、JT Baker Phillipsburg、NJ、USA から購入)。
[見出し]見出しテスト[/見出し]
Aldrich (ミルウォーキー、ウィスコンシン、米国) から購入した 3-アミノフルオランテン。
1-アミノピレン
1-パルミトイル-グリセロ-3-ホスホコリン
カフェイン
シトシン
ギ酸 (LC/MS グレード)
ナリジクス酸
テオフィリン
Fluka (Milwaukee, WI, USA) から購入した HPLC グレードのロイシン エンケファリン
塩酸アミトリプチリン
β-Asp-Leu
イソロイシン
γ- Glu-Leu
馬尿酸
ロイシン
1-オレオイル-グリセロ-3-ホスホコリン
フェニルアラニン

Sigma (米国ミズーリ州セントルイス) から購入した 1-ステアロイル-グリセロ-ホスホコリントリプトファンおよびチロシン。
'

私が実行すると:

preg_match_all($pattern,$text,$matches,PREG_OFFSET_CAPTURE)

最後のサブパターン、末尾の '(.*)' がキャプチャされません。その理由がわかりません。説明はありますか?

(つまり、Millipore Milli-Q システム (米国マサチューセッツ州ビレリカ) から蒸留水を取得します。HPLC グレードのメタノールとアセトニトリルは、米国ニュージャージー州の JT Baker Phillipsburg から購入しました)。[見出し]見出しテスト[/見出し]'

ただし、文字列の最後の部分ではありません:

3-アミノフルオランテンは、Aldrich (Milwaukee, WI, USA) から購入しました。1-アミノピレン 1-パルミトイル-グリセロ-3-ホスホコリン カフェイン シトシン ギ酸 (LC/MS グレード) ナリジクス酸 テオフィリン Fluka (Milwaukee, WI, USA) から購入した HPLC グレードのロイシン エンケファリン 塩酸アミトリプチリン β-Asp-Leu イソロイシン γ- Glu-Leu 馬尿酸ロイシン 1-オレオイル-グリセロ-3-ホスホコリン フェニルアラニン 1-ステアロイル-グリセロ-ホスホコリン トリプトファンおよびチロシンは、Sigma (セントルイス、ミズーリ州、米国) から購入しました。

私が欲しい)

4

2 に答える 2

1

貪欲反転フラグを削除すると、うまく機能します。

$pattern = '/(.*)(\[(heading)\](.*)\[\/\3\])(.*)/s';

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => Distilled water from a Millipore Milli-Q system (Billerica, MA, USA).
HPLC-grade methanol and acetonitrile purchased from J. T. Baker Phillipsburg, NJ, USA).
[heading]HEading test[/heading]
3-Aminofluoranthene purchased from Aldrich (Milwaukee, WI, USA).
1-Aminopyrene
1-palmitoyl-glycero-3-phosphocholine
caffeine
cytosine
formic acid (LC/MS grade)
nalidixic acid
theophylline
HPLC-grade leucine enkephalin purchased from Fluka (Milwaukee, WI, USA)
Amitriptyline hydrochloride
β-Asp-Leu
isoleucine
γ-Glu-Leu
hippuric acid
leucine
1-oleoyl-glycero-3-phosphocholine
phenylalanine
1-stearoyl-glycero-phosphocholine
tryptophan and tyrosine purchased from Sigma (St. Louis, MO, USA).

                    [1] => 0
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [0] => Distilled water from a Millipore Milli-Q system (Billerica, MA, USA).
HPLC-grade methanol and acetonitrile purchased from J. T. Baker Phillipsburg, NJ, USA).

                    [1] => 0
                )

        )

    [2] => Array
        (
            [0] => Array
                (
                    [0] => [heading]HEading test[/heading]
                    [1] => 160
                )

        )

    [3] => Array
        (
            [0] => Array
                (
                    [0] => heading
                    [1] => 161
                )

        )

    [4] => Array
        (
            [0] => Array
                (
                    [0] => HEading test
                    [1] => 169
                )

        )

    [5] => Array
        (
            [0] => Array
                (
                    [0] => 
3-Aminofluoranthene purchased from Aldrich (Milwaukee, WI, USA).
1-Aminopyrene
1-palmitoyl-glycero-3-phosphocholine
caffeine
cytosine
formic acid (LC/MS grade)
nalidixic acid
theophylline
HPLC-grade leucine enkephalin purchased from Fluka (Milwaukee, WI, USA)
Amitriptyline hydrochloride
β-Asp-Leu
isoleucine
γ-Glu-Leu
hippuric acid
leucine
1-oleoyl-glycero-3-phosphocholine
phenylalanine
1-stearoyl-glycero-phosphocholine
tryptophan and tyrosine purchased from Sigma (St. Louis, MO, USA).

                    [1] => 191
                )

        )

)
于 2012-09-15T17:12:18.537 に答える
-1

最後の (.*) を (.|\n)* に置き換えてみてください

于 2012-09-15T17:15:32.217 に答える