2017-01-12 17 views
1

上でputingのない私はどのようにPHPで正規表現agroupに配列

if (preg_match('/(Seg|Segunda)? [aà] (Sex|sexta)?: (de)?\s?(\d{1,2})h?(\d{2})? [aà]s (.*?)h(\d{2})?/is', $obj["horario"], $hora)) 

この正規表現を持っていると私は(上の内側の値を持つ配列を使用する場合は)その等... $hora[2]$hora[1]のような問題は、配列の中にのようなagrupationsを入れたいとは思っていません。なぜなら、私は桁のexpreisonsを必要としているからです。

+1

申し訳ありませんが、私はアイデアが何もないと思います。たぶん例? – AbraCadaver

+1

非キャプチャグループ - '(Seg | Segunda)' => '(?:Seg | Segunda)'を使用します。それはあなたの期待通りに機能しますか? –

+0

@WiktorStribiżewはい、ありがとう! –

答えて

0

正規表現パターンのグループをキャプチャするだけで、結果としてpreg_matchという配列にPHPが項目を追加します。それらを置くことを避けるために、キャプチャしないものに変換するだけで、の後に?:を追加します。グループに交替演算子が含まれていない場合は、かっこを削除することができます((.*?) =>.*?)。例えば

if (preg_match('/(?:Seg|Segunda)? [aà] (?:Sex|sexta)?: (?:de)?\s?(\d{1,2})h?(\d{2})? [aà]s .*?h(\d{2})?/is', $obj["horario"], $hora)) 

、唯一の桁の値がアレイ内の個別の項目として追加されます。