- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:preg_matchのキャプチャ用サブパターンにマッチした文字列について)
preg_matchのキャプチャ用サブパターンにマッチした文字列について
このQ&Aのポイント
- preg_matchのキャプチャ用サブパターンにマッチした文字列について、条件を満たすかどうかについての質問です。
- 条件1では、[*DATA: *]で囲まれたデータ(以下DATA)を取得することが目的です。
- しかし、条件2において、oXoまたはoYoが順不同で、それぞれ1回または0回出現するという条件を満たす結果を得る方法を知りたいとのことです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
非格納グループで1つのまとまりをグルーピングすれば できると思います。 $reg = '/\[\*DATA:(.*?)(o[XY]o)(.*?)(?:(o[XY]o)(.*?))?\*\]/u'; (?:(o[XY]o)(.*?))? この部分が非格納グループによるグルーピングで ?で0回か1回にしているので マッチしなければ格納されません。 テストパターンとして $test = '[*DATA: A oYo B oXo C *]'; Array ( [0] => [*DATA: A oYo B oXo C *] [1] => A [2] => oYo [3] => B [4] => oXo [5] => C ) $test = '[*DATA: A oYo B *]'; Array ( [0] => [*DATA: A oYo B *] [1] => A [2] => oYo [3] => B ) となりました。