From: "Jesús Gabriel y Galán" Date: 2009-10-28T17:11:52+09:00 Subject: Re: Try to copy text between two know string On Wed, Oct 28, 2009 at 6:17 AM, Ahmad Azizan wrote: > Jesús Gabriel y Galán 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 =<> 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  test = 100;\n  puts test\n  (1..10).each { |i| puts i >> }\nend\n" >> irb(main):011:0> m = text.match /def(.*)end/m >> => #> puts i }\nend" 1:"\n  test = 100;\n  puts test\n  (1..10).each { |i| >> puts i }\n"> >> irb(main):012:0> m[1] >> => "\n  test = 100;\n  puts 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.