PHP preg_match_all regex confusion


PHP preg_match_all regex confusion

这是数据

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

我的模式不工作谁能帮帮我?

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

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

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