2011-09-11 6 views
0

これは、これは、それが1つを持っている場合、私は完全な数字の文字列例えば0.0または0.1プラス音声言語(GER)を必要とするパターンPHPのpreg_match_allの正規表現の混乱

/Stream #([0-9\.]+).([A-Za-z0-9]+).+Audio/ 

あるデータ

Stream #0.0(ger): Audio: aac, 48000 Hz, stereo, s16 (default) 
Stream #0.1: Audio: wmav2 (a[1][0][0]/0x0161), 48000 Hz, 2 channels, s16, 160 kb/s 

です!

私のパターンは機能しません 誰でも手助けできますか?

答えて

3
"/Stream #([0-9\.]+).([A-Za-z0-9]+).+Audio/" 

([A-Za-z0-9]+)の括弧は実際の文字ではなくグループとして解釈されています。バックスラッシュでエスケープする必要があります。

"/Stream #([0-9\.]+).\\([A-Za-z0-9]+\\).+Audio/" 

しかし、あなたは、この部分はオプションになりたい場合は、あなたがその周りに括弧の別のセットを入れて、それをオプションにする?を添付する必要があります。

"/Stream #([0-9\.]+).(\\([A-Za-z0-9]+\\))?.+Audio/" 
2

はこれを試してみてください: /Stream #(\d+\.\d+)(\([A-Za-z0-9]+\))?.+Audio/

これは、番号i.ex .: 0.0を\ 1グループとして、(ger)を\ 2グループとして返​​します。

+0

あなたのエスケープする必要があります。 –

+0

ありがとうございますこれは解決策です –

+0

@サスカ:これはあなたが探していた解決策ならば、質問の横にある大きなチェックマークをクリックして回答を受け入れる必要があります。 – Herbert