I do not understand behavior of positive look arounds in Ruby:
chunked_data = “DIVex>##ECHO=b698fd4cc1ea4c7a4b5c4e1d1c402911##”
p $& if chunked_data =~ /(?=DIVex)DI/ # => DI
However,
chunked_data = “##ECHO=b698fd4cc1ea4c7a4b5c4e1d1c402911##”
p $& if chunked_data =~ /(?=<DIVex)DI/ # => nil
does < gets treated as special character inside (?= …) ?
On 12/5/06, hemant [email protected] wrote:
does < gets treated as special character inside (?= …) ?
No, but lookahead assertions are zero-width, so if your assertion
matches <DIV, your cursor is still before the <, and thus won’t match
DI. p $& if chunked_data =~ /(?=<DIVex)<DI/ works fine.
martin
On 12/5/06, Martin DeMello [email protected] wrote:
does < gets treated as special character inside (?= …) ?
No, but lookahead assertions are zero-width, so if your assertion
matches <DIV, your cursor is still before the <, and thus won’t match
DI. p $& if chunked_data =~ /(?=<DIVex)<DI/ works fine.
Holy cat…thanks
There are a few types of “lookarounds”: positive lookahead, negative
lookahead, positve lookbehind, negative look behind.
To use positive lookbehind, you would use (?<=…). Ruby might be
interpreting ?=< as ?<=. Try escaping the < by adding a \ before it.
----- Original Message -----
From: hemant
Date: Monday, December 4, 2006 11:29 pm
Subject: doubt with positive lookaround
To: [email protected] (ruby-talk ML)
On Dec 5, 2006, at 12:58 PM, [email protected] wrote:
There are a few types of “lookarounds”: positive lookahead,
negative lookahead, positve lookbehind, negative look behind.
To use positive lookbehind, you would use (?<=…). Ruby might be
interpreting ?=< as ?<=. Try escaping the < by adding a \ before it.
The regex engine in Ruby 1.8 does not support look-behind
assertions. The regex engine in 1.9, Oniguruma, does.
James Edward G. II
On 12/6/06, James Edward G. II [email protected] wrote:
On Dec 5, 2006, at 12:58 PM, [email protected] wrote:
There are a few types of “lookarounds”: positive lookahead,
negative lookahead, positve lookbehind, negative look behind.
To use positive lookbehind, you would use (?<=…). Ruby might be
interpreting ?=< as ?<=. Try escaping the < by adding a \ before it.
The regex engine in Ruby 1.8 does not support look-behind
assertions. The regex engine in 1.9, Oniguruma, does.
Yup James I am aware of that. I was blind enough to not see my silly
mistake.
Thanks