Matching multiple line reg exp

Hi there,
Trying for a couple of hours (again without success) to create a regular
expression that matches a multi-line statement , i found myself here
again, asking for help.
The case is now:

<def>/123/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<nop>xxxxx
<tuv>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<wxy>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx

I am unable to match the statements that contains multiple lines.
The regexp looks so far like this:

/(\<[a-z][a-z][a-z]\>.*?$)/m

The question is why is only returning matches until the first end of
line?
I am sure the greediness of the expression should take him to the last
new line character just before the next statement comes, but maybe is
just that i need to read a lot more to understand the concept right.
In any case, can somebody point me what i am missing to run the scan
method and get each match (including the ones with multiple lines)?

Thanks a lot.

···

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

/^(<[a-z]{3}>[^<]*)/

···

On Nov 22, 2:33 pm, Guillermo Riojas <guillermo.rio...@gmail.com> wrote:

Hi there,
Trying for a couple of hours (again without success) to create a regular
expression that matches a multi-line statement , i found myself here
again, asking for help.
The case is now:

<def>/123/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<nop>xxxxx
<tuv>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<wxy>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx

I am unable to match the statements that contains multiple lines.
The regexp looks so far like this:

/(\<[a-z][a-z][a-z]\>.*?$)/m

The question is why is only returning matches until the first end of
line?
I am sure the greediness of the expression should take him to the last
new line character just before the next statement comes, but maybe is
just that i need to read a lot more to understand the concept right.
In any case, can somebody point me what i am missing to run the scan
method and get each match (including the ones with multiple lines)?

Thanks a lot.

--
Posted viahttp://www.ruby-forum.com/.

Hi, Guillermo, your regexp works for me. Perhaps you are using a method that
only looks for the first match.

str = "<def>/123/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<nop>xxxxx
<tuv>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<wxy>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx"

results = str.scan( /(\<[a-z][a-z][a-z]\>.*?$)/m )

require 'pp'
pp results

# >> [["<def>/123/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],
# >> ["<nop>xxxxx"],
# >> ["<tuv>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],
# >> ["<wxy>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"]]

···

On Mon, Nov 22, 2010 at 2:33 PM, Guillermo Riojas < guillermo.riojas@gmail.com> wrote:

Hi there,
Trying for a couple of hours (again without success) to create a regular
expression that matches a multi-line statement , i found myself here
again, asking for help.
The case is now:

<def>/123/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<nop>xxxxx
<tuv>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<wxy>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx

I am unable to match the statements that contains multiple lines.
The regexp looks so far like this:

/(\<[a-z][a-z][a-z]\>.*?$)/m

The question is why is only returning matches until the first end of
line?
I am sure the greediness of the expression should take him to the last
new line character just before the next statement comes, but maybe is
just that i need to read a lot more to understand the concept right.
In any case, can somebody point me what i am missing to run the scan
method and get each match (including the ones with multiple lines)?

Thanks a lot.

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

In multiline regular expressions in Ruby, the caret and dollar sign
also match newlines in the string, which is why it only read a line at
a time.

···

On Mon, Nov 22, 2010 at 3:45 PM, w_a_x_man <w_a_x_man@yahoo.com> wrote:

On Nov 22, 2:33 pm, Guillermo Riojas <guillermo.rio...@gmail.com> > wrote:

Hi there,
Trying for a couple of hours (again without success) to create a regular
expression that matches a multi-line statement , i found myself here
again, asking for help.
The case is now:

<def>/123/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<nop>xxxxx
<tuv>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<wxy>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx

I am unable to match the statements that contains multiple lines.
The regexp looks so far like this:

/(\<[a-z][a-z][a-z]\>.*?$)/m

The question is why is only returning matches until the first end of
line?
I am sure the greediness of the expression should take him to the last
new line character just before the next statement comes, but maybe is
just that i need to read a lot more to understand the concept right.
In any case, can somebody point me what i am missing to run the scan
method and get each match (including the ones with multiple lines)?

Thanks a lot.

--
Posted viahttp://www.ruby-forum.com/.

/^(<[a-z]{3}>[^<]*)/