re = /<emphasis>(.*) Code<\/emphasis>\s*<\/para>\s*<program ?(language="(.*)")?>\s*(.*)<\/program>/m
str = ' <section id="foo">
<title>Code about Bears</title>
<para>Words</para>
<para><emphasis>Python Code</emphasis></para>
<program language="py">import bears</program>
<para><emphasis>JavaScript Code</emphasis></para>
<program language="js">var bear = require(\'bears\');</program>
<section id="bar">
<title>Code about Bear Cubs</title>
<para>Words</para>
<para><emphasis>Python Code</emphasis></para>
<program language="py">import cubs</program>
<para><emphasis>JavaScript Code</emphasis></para>
<program language="js">var cub = require(\'cubs\');</program>
</section>
</section>'
# 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