2012-04-04 7 views
0

私はSDPパッケージのメディア記述を抽出しようとしています。このRegexの何が問題なのですか? (Look-Ahead and Look-Behind)

私は

a=rtpmap:113 H264/90000 

(キャリッジリターンが常に存在することの後に)私は= rtpmap後にすべてたいようなラインを持っている:なし、[番号] [空白]をキャリッジリターンまで

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

を私は

のように行う場合は、次のリターン自体とは動作しません、次の正規表現を構築しました
(?<=(a=rtpmap:[0-9]{3}\s)).* 

少なくとも結果はありますが、rtpmapの後の数字は必ずしも3文字ではありません。なぜここで+が働いていないのですか?

+0

あなたはどのような結果をしたいですか?上記の例では? – Bikee

+0

私はH264/90000だけを望みます。それ以降のキャリッジリターンではなく、a = rtpmap:[number] [空白]の前に、結果がない場合は、a = rtpmap:[number] [空白] –

答えて

4

Many regex engines do not support arbitrary- or variable-length lookbehind. .NETがそうですが、それだけではほとんどありません。

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

と最初のキャプチャグループを使用して:あなたは、次のようなものを使用したほうが良いはずです、あなたの場合は

+0

が意味を持ち動作します。どうもありがとうございました!! –

0

使用この代わりに

(?<は=(A = rtpmap:(\ dは+)\ sの))。*

関連する問題