On Wed, 12 May 2004 08:15:28 +0900, Joel VanderWerf wrote:

> Kristof Bastiaensen wrote:
>> Hi,
>> 
>> I am wondering if this is the correct behaviour in gsub:
>> 
>> "bab".gsub(/(?!a)ab/, "cd")
>> => "bab"
>> 
>> shouldn't that be "bcd"?
> 
> I think /(?!a)ab/ can't match anything. It's saying that the first 
> character after the beginning of the match must not be "a", and the 
> first character of the match must be "a". This is contradictory.

Yes, that would clarify the situation, but is it the correct
behaviour?  I would think that (?!a)a doesn't mean the same
character, but consecutive ones.  Because it doesn't consume
the character, it effectively is the character 'before' the
match (if any).  The other behaviour wouldn't make sense,
because (?!a)b is then exactly the same as b.

Kristof