Regexp: getting the first found

Hello,

I’m having some problem comprehending the regexp for my current need.

Example input (2 scenario):

<<
/Filter
/FlateDecode
/Length 4169

stream
blablabla
endstream

<< >>

<</Filter/FlateDecode/Length 4169>>
stream
blablabla
endstream

<< >>

I’ve trying to get the string after the string /Filter and the first
seen “>>” by using this regexp: /<<(.)/Filter(.)>>/im

The problem is that, there is two >> in the input and the regexp takes
until the last >> it detected. How can I make it to get only until the
first >> that it detects ?

Thank you in advance

Ahmad,

Newbie here so take what I have to say with a grain of salt.

Your pattern is “greedy”. To turn it into a lazy pattern add a
question mark thusly …

/<<(.)/Filter(.?)>>/

(untested)

Ralph

Monday, November 9, 2009, 2:43:12 AM, you wrote:

AA> Hello,

AA> I’m having some problem comprehending the regexp for my current
need.

AA> Example input (2 scenario):

AA> 1.

AA> <<
AA> /Filter
AA> /FlateDecode
AA> /Length 4169

AA> stream
AA> blablabla
AA> endstream

AA> << >>

AA> 2.

AA> <</Filter/FlateDecode/Length 4169>>
AA> stream
AA> blablabla
AA> endstream

AA> << >>

AA> I’ve trying to get the string after the string /Filter and the first
seen “>>>” by using this regexp: /<<(.)/Filter(.)>>/im

AA> The problem is that, there is two >> in the input and the regexp
takes
until the last >>> it detected. How can I make it to get only until the
first >>> that it detects ?

AA> Thank you in advance

Ralph S. wrote:

Ahmad,

Newbie here so take what I have to say with a grain of salt.

Your pattern is “greedy”. To turn it into a lazy pattern add a
question mark thusly …

/<<(.)/Filter(.?)>>/

(untested)

Ralph

Thanks for the reply.

Basically that’s what I need. Thanks for pointing me towards new options
like “greedy”. Because of that, I’ve been able to find new Ruby regex
reference like

Really appreciate that, thanks