EDIT:以下の答えとコメントは、私がこれを明確に説明していないと思うようにしています...リストの複数の出現と一致する正規表現を探しています。たとえば、私はABCBCBCBCBCDを取りたいかもしれませんし、配列[BC、BC、BC、BC、BC]を取得したいと考えています。私はリストにどれくらいのアイテムが入るのか分かりません。それがABCDなら、私はリスト[bc]が必要です。それがABCBCDならば、私は[bc、bc]が必要です。私はBCのすべての出現と一致するように/ A(BC)+ D /を使用することができますが、それは動作しません。 リスト内の項目のPreg_match
元の質問
...は、私は非常に大きなデータファイルのセットを持っています。ファイルごとに、私はそれの中から項目のリストがほしいだけです。私が探している情報の形式は次のとおりです。
...<RXCUI> <LN ID=531123>Amoxicillin</LN>, <LN ID=441656>Amikacin</LN></ERS>...
...は、このセットの前後に大量のテキストがあることを意味します。私は簡単に続いて正規表現
preg_match('~<RXCUI>[^<]*(<LN[^>]*>[^<]*</LN>[^<]*)~', $data, $matches);
を使用してリストの最初の項目を取得することができ、$マッチ[1]は、「アモキシシリン」。リスト内のすべての試合を以下のように使ってみました:
preg_match('~<RXCUI>[^<]*(<LN[^>]*>[^<]*</LN>[^<]*)+~', $data, $matches);
これは動作しません。私はマッチを得ない。 「(と)の間の前のシーケンスに対する複数の一致」の構文は何ですか?注目すべきは
が、これは、$試合では何かということです:
Array (
[0] => <RXCUI> <LN ID=531123>Amoxicillin</LN>, <LN ID=441656>Amikacin</LN>
[1] => <LN ID=531123>Amoxicillin</LN>
)
だから、それは、リスト内の両方のアイテムに見えたが、最初のものだけが返されました。私が欲しいものは:
Array (
[0] => <RXCUI> <LN ID=531123>Amoxicillin</LN>, <LN ID=441656>Amikacin</LN>
[1] => <LN ID=531123>Amoxicillin</LN>
[2] => <LN ID=441655>Akikacin</LN>
)
これはhttps://regex101.com/r/dZ0vZ3/1ではありませんか? – rock321987
@ rock321987それは動作しません。これはすべてのLNエントリに一致します。私は、RXCUIタグに続くLNエントリだけを必要とします。 – kainaw
'RXCUI'内の' LN'タグのすべての内容、または最初の? – rock321987