这个正则表达式出了什么问题? (前瞻和后视)

时间:2012-04-04 11:05:11

标签: regex sdp

我尝试提取SDP包的媒体描述。

我有一行像

a=rtpmap:113 H264/90000

(之后总是有回车)

我希望a = rtpmap之后的所有内容:[number] [whitespace]直到回车,没有返回本身并构造了以下正则表达式,这不起作用:

(?<=(a=rtpmap:[0-9]+\s)).*(?=\r)

如果我喜欢

(?<=(a=rtpmap:[0-9]{3}\s)).*

我至少得到了一个结果,但是rtpmap之后的数字并不总是3个字符。为什么不在这里工作?

2 个答案:

答案 0 :(得分:4)

Many regex engines do not support arbitrary- or variable-length lookbehind. .NET确实如此,但在这方面它几乎是独一无二的。

在您的情况下,您应该更好地使用以下内容:

a=rtpmap:\d+ ([^\r]+)

并使用第一个捕获组。

答案 1 :(得分:0)

改为使用

  

(小于=(α= rtpmap:(\ d +)\ S))。*