On Wed, Oct 28, 2009 at 6:17 AM, Ahmad Azizan <ahmad.azizan / gmail.com> wrote:
> Jesù¸ Gabriel y GaláÏ wrote:
>>
>> This is one way that solves what you said. The problem with regexes is
>> how it will handle the cases you didn't say :-)
>> (for example, what do you want to match when there are more "ends" and
>> so on).
>>
>> irb(main):002:0> text =<<EOF
>> irb(main):003:0" def
>> irb(main):004:0" test = 100;
>> irb(main):005:0" puts test
>> irb(main):006:0" (1..10).each { |i| puts i }
>> irb(main):007:0" end
>> irb(main):008:0" EOF
>> => "def\n est = 100;\n uts test\n 1..10).each { |i| puts> }\nend\n"
>> irb(main):011:0> m = text.match /def(.*)end/m
>> => #<MatchData "def\n est = 100;\n uts test\n 1..10).each { |i|
>> puts i }\nend" 1:"\n est = 100;\n uts test\n 1..10).each {i|
>> puts i }\n">
>> irb(main):012:0> m[1]
>> => "\n est = 100;\n uts test\n 1..10).each { |i| puts i }\n"
>>
>> Hope this helps,
>>
>> Jesus.
>
> Thank you, it did helped me.
> Actually I've tried using the same regex as you use, which is
> /def(.*)end/, however i overlooked the m in the end of /

Just for the record: the m regex modifier means "multiline" and makes
the dot match the newline character.

Jesus.