【问题标题】:what's wrong with this Regex? (Look-Ahead and Look-Behind)这个正则表达式有什么问题? (向前看和向后看)
【发布时间】:2012-04-18 02:02:41
【问题描述】:

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

我有一条类似的线

a=rtpmap:113 H264/90000

(之后总是有回车)

我想要 a=rtpmap:[number][whitespace] 之后的所有内容,直到回车,没有回车本身并构造了以下 Regex,这不起作用:

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

如果我喜欢

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

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

【问题讨论】:

  • 你想要什么结果?在上面的例子中?
  • 我只想要 H264/90000;不是后面的回车,不是前面的 a=rtpmap:[number][whitespace] 也没有结果,如果没有 a=rtpmap:[number][whitespace]

标签: regex sdp


【解决方案1】:

Many regex engines do not support arbitrary- or variable-length lookbehind. .NET 可以,但在这方面它几乎是唯一的。

在您的情况下,您最好使用以下内容:

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

并使用第一个捕获组。

【讨论】:

    【解决方案2】:

    改用这个

    (?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-03
      • 2016-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多