PHP preg_match_all正则表达式混淆

时间:2011-09-11 18:38:48

标签: php regex

这是数据

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),如果它有一个!

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

2 个答案:

答案 0 :(得分:3)

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

([A-Za-z0-9]+)中的parens被解释为组,而不是实际字符。你需要用反斜杠来逃避它们。

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

但是如果你想让这个部分是可选的,你需要在它周围放置另一组parens,并附上?以使其成为可选:

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

答案 1 :(得分:2)

试试这个: /Stream #(\d+\.\d+)(\([A-Za-z0-9]+\))?.+Audio/

如果存在,它应该返回数字i.ex.:0.0作为\ 1组,(ger)作为\ 2组返回。