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/.
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}>[^<]*)/