re = /m=audio.*\r?\n(?!(?:^a=.*\r?\n)*^a=rtpmap:0 pcmu\/8000)(?:^a=.*\r?\n)*^a=rtpmap:18 g729\/8000\r?\n(?:^a=.*\r?\n)*/m
str = 'm=audio 16468 RTP/AVP 0 8 9 18 120 102 104 103 101
a=rtpmap:8 pcma/8000
a=rtpmap:9 g722/8000
a=rtpmap:18 g729/8000
a=fmtp:18 annexb=yes
a=rtpmap:120 opus/48000/2
a=rtpmap:102 iLBC/8000
a=rtpmap:104 iSAC/32000
a=rtpmap:103 iSAC/16000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
m=audio 16468 RTP/AVP 0 8 9 18 120 102 104 103 101
a=rtpmap:0 pcmu/8000
a=rtpmap:8 pcma/8000
a=rtpmap:9 g722/8000
a=rtpmap:18 g729/8000
a=fmtp:18 annexb=yes
a=rtpmap:120 opus/48000/2
a=rtpmap:102 iLBC/8000
a=rtpmap:104 iSAC/32000
a=rtpmap:103 iSAC/16000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
m=audio 16468 RTP/AVP 0 8 9 18 120 102 104 103 101
a=rtpmap:8 pcma/8000
a=rtpmap:9 g722/8000
a=rtpmap:18 g729/8000
a=fmtp:18 annexb=yes
a=rtpmap:120 opus/48000/2
a=rtpmap:102 iLBC/8000
a=rtpmap:104 iSAC/32000
a=rtpmap:103 iSAC/16000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
'
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html