2011-09-11 77 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