これは、あなたの正規表現:
(0(?:[0-9]|[A-F]){3})
(\"\*?(?:SIA-DCS|ADM-CID|NULL)\")
(\d{4})
(R?(?:[0-9]|[A-F])*)
(L[^#]*)
(#[^\[]*)
(\[[^\[]*)
(\[(?:M|V|P)(?:[^\[])*])
キャプチャグループは8つしかありません。は何も繰り返されません。なぜ10個のグループを出力する必要があると思いますか?
OK、最後のグループの(?:M|V|P)
のため、最後の3つの角括弧の内容と一致することができますが、このグループは繰り返されないため、最初のものと一致します。
あなたは2つの可能性があります。
-
(0(?:[0-9]|[A-F]){3})(\"\*?(?:SIA-DCS|ADM-CID|NULL)\")(\d{4})(R?(?:[0-9]|[A-F])*)(L[^#]*)(#[^\[]*)(\[[^\[]*)(\[(?:M|V|P)(?:[^\[])*])+
または
(0(?:[0-9]|[A-F]){3})(\"\*?(?:SIA-DCS|ADM-CID|NULL)\")(\d{4})(R?(?:[0-9]|[A-F])*)(L[^#]*)(#[^\[]*)(\[[^\[]*)(\[(?:M|V|P)(?:[^\[])*]){3}
これは今最後までの文字列にマッチします最後のグループの後ろに数量詞を置くが、唯一の8キャプチャグループとコンテンツが残っています最後の1つは、もはや "[Vanydata]"ではなく、このグループの最後の試合 "[Panydata]"
これは今10のキャプチャグループを持っていないと、結果が予想通りで、あなたの正規表現に
(0(?:[0-9]|[A-F]){3})(\"\*?(?:SIA-DCS|ADM-CID|NULL)\")(\d{4})(R?(?:[0-9]|[A-F])*)(L[^#]*)(#[^\[]*)(\[[^\[]*)(\[(?:M|V|P)(?:[^\[])*])(\[(?:M|V|P)(?:[^\[])*])(\[(?:M|V|P)(?:[^\[])*])
をさらに2つのグループを追加します。これら3つの最後のグループの開始文字は常にグループごとに同じである場合は、
(0(?:[0-9]|[A-F]){3})(\"\*?(?:SIA-DCS|ADM-CID|NULL)\")(\d{4})(R?(?:[0-9]|[A-F])*)(L[^#]*)(#[^\[]*)(\[[^\[]*)(\[V(?:[^\[])*])(\[M(?:[^\[])*])(\[P(?:[^\[])*])
にそれを簡素化することができますhere on Regexr
それを参照してください更新
オプションの何かを作ることができますそれ以降に疑問符を追加してください。
(0(?:[0-9]|[A-F]){3})(\"\*?(?:SIA-DCS|ADM-CID|NULL)\")(\d{4})(R?(?:[0-9]|[A-F])*)(L[^#]*)(#[^\[]*)(\[[^\[]*)(\[[VMP](?:[^\[])*])?(\[[VMP](?:[^\[])*])?(\[[VMP](?:[^\[])*])?
here on Regexrを参照してください。一致する部分にマウスを合わせると、キャプチャグループの内容が表示されます。
そして、何に動作しない、いただきました!現在の成果? – Alex
'[]'が必要であるか、出力されていないとOKです。 – RanRag
ブラケットが必要です。 –