2011-09-11 106 views
0

這是數據PHP preg_match_all正則表達式混亂

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 

這是圖案

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

我需要完整的數字串例如0.0或0.1加上音頻語言(GER),如果它具有一個!

我的模式不起作用 任何人都可以幫忙嗎?

回答

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

([A-Za-z0-9]+)中的parens被解釋爲組,而不是實際的字符。你需要用反斜槓來逃避它們。

"/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

@Sascha:如果這是你正在尋找的解決方案,你應該通過點擊問題旁邊的大複選標記來接受答案。 – Herbert