Line breaks in multiline regexp

Hi! I really want to know how to denote line breaks in multiline regexp.

The problem is that \s is not only a line break.

I.e. how to parse this in a general way?

s=<<HERE
a loooong-loooong text with
MANY spaces and *single* line breaks
followed by three empty lines

this line must be detached from the previous
HERE

Thanks in advance!

···

--
Posted via http://www.ruby-forum.com/.

Hi,

I see that Rob posted a response to this but his email came thru blank
for me so I will answer again. Hopefully I'm not repeating his info.

"\n" is a line break and only a line break. So to detach those lines
you would do:
s = s.split(/\n{3}/)
s[0] #=> a looongtest...many spaces...followed by 3 empty lines, etc.
s[1] #=> this line must be detached...

Dan

···

On Fri, Apr 18, 2008 at 9:25 AM, Andrey Chaschev <chaschev@gmail.com> wrote:

Hi! I really want to know how to denote line breaks in multiline regexp.

The problem is that \s is not only a line break.

I.e. how to parse this in a general way?

s=<<HERE
a loooong-loooong text with
MANY spaces and *single* line breaks
followed by three empty lines

  this line must be detached from the previous
HERE

Thanks in advance!
--
Posted via http://www.ruby-forum.com/\.

Oops! If I have the "signed" option in Mail.app, the response doesn't make it sometimes.
-Rob

Hi! I really want to know how to denote line breaks in multiline regexp.

The problem is that \s is not only a line break.

I.e. how to parse this in a general way?

s=<<HERE
a loooong-loooong text with
MANY spaces and *single* line breaks
followed by three empty lines

this line must be detached from the previous
HERE

Thanks in advance!

Just use \n to match the literal newline. The m option just changes when \n is matched by a wildcard.

s.match(/(.*\n\n\n)/m).captures

=> ["a loooong-loooong text with\nMANY spaces and *single* line breaks\nfollowed by three empty lines\n\n\n"]

s =~ /(.*\n\n\n)/m

=> 0

$1

=> "a loooong-loooong text with\nMANY spaces and *single* line breaks\nfollowed by three empty lines\n\n\n"

Without the m

s =~ /(.*\n\n\n)/

=> 69

$1

=> "followed by three empty lines\n\n\n"

You can still have \n, but the .* doesn't match all the previous characters.

-Rob

Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com

···

On Apr 18, 2008, at 9:25 AM, Andrey Chaschev wrote:

I reposted by earlier response, but Dan's suggestion might be closer to what you want.
-Rob

···

On Apr 18, 2008, at 10:20 PM, Daniel Finnie wrote:

Hi,

I see that Rob posted a response to this but his email came thru blank
for me so I will answer again. Hopefully I'm not repeating his info.

"\n" is a line break and only a line break. So to detach those lines
you would do:
s = s.split(/\n{3}/)
s[0] #=> a looongtest...many spaces...followed by 3 empty lines, etc.
s[1] #=> this line must be detached...

Dan

On Fri, Apr 18, 2008 at 9:25 AM, Andrey Chaschev > <chaschev@gmail.com> wrote:

Hi! I really want to know how to denote line breaks in multiline regexp.

The problem is that \s is not only a line break.

I.e. how to parse this in a general way?

s=<<HERE
a loooong-loooong text with
MANY spaces and *single* line breaks
followed by three empty lines

this line must be detached from the previous
HERE

Thanks in advance!
--
Posted via http://www.ruby-forum.com/\.

Daniel Finnie wrote:

s = s.split(/\n{3}/)

Yes, indeed this works! Thank you guys!

The problem was with my JRuby. It understands "\n" neither in a search
string nor in a regexp. It is probably a bug. I will give you an
example if it is interesting, when I am at work.

···

--
Posted via http://www.ruby-forum.com/\.

Andrey Chaschev wrote:

Daniel Finnie wrote:

s = s.split(/\n{3}/)

The problem was with my JRuby. It understands "\n" neither in a search
string nor in a regexp. It is probably a bug. I will give you an
example if it is interesting, when I am at work.

Sorry, this indeed works fine. Don't know what was the problem. Thank
you!

···

--
Posted via http://www.ruby-forum.com/\.