[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

line breaks in multiline regexp

Andrey Chaschev

4/18/2008 1:25:00 PM

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-....

6 Answers

Rob Biedenharn

4/18/2008 2:02:00 PM

0



Daniel Finnie

4/19/2008 2:21:00 AM

0

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-....
>
>

Rob Biedenharn

4/19/2008 7:30:00 PM

0

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

On Apr 18, 2008, at 9:25 AM, Andrey Chaschev 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!

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

irb> 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"]
irb> s =~ /(.*\n\n\n)/m
=> 0
irb> $1
=> "a loooong-loooong text with\nMANY spaces and *single* line
breaks\nfollowed by three empty lines\n\n\n"

Without the m

irb> s =~ /(.*\n\n\n)/
=> 69
irb> $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://agileconsult...
Rob@AgileConsultingLLC.com


Rob Biedenharn

4/19/2008 7:31:00 PM

0

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-....
>>
>>
>


Andrey Chaschev

4/19/2008 10:37:00 PM

0

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-....

Andrey Chaschev

4/21/2008 3:19:00 PM

0

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-....