On 7/17/06, Steve Throckmorton <nntp.m.ttwelve / xoxy.net> wrote:
> I found this regexp in the docs for the OptionParser class, and I don't
> understand it.  Google hasn't helped, nor has the Pickaxe, so I thought
> I would ask here.  The purpose of the code is to ensure that a file
> extension submitted by the user begins with a period (a dot).
>
> file_ext.sub!(/\A\.(?=.)/, ".")
>
> I understand all except (?=.)  As far as I can tell the regexp works
> fine without it.  I can delete the dot inside the parens, and the code
> still runs.  I can change the = to a - and the code runs, but if I
> substitute a letter or a * instead, it doesn't.
>
> Someone please clue me in here.  What is this thing?
>

\A    start of subject (independent of multiline mode)

(?=  is a positive look ahead assetion

so \A the begining of the input \. is a literal . (and there must be
something more than that afterwords.

$ irb
>> re = /\A\.(?=.)/
=> /\A\.(?=.)/
>> re.match('abc')
=> nil
>> re.match('.')
=> nil
>> re.match('.a')
=> #<MatchData:0x40988d7c>
>> re.match('.123')
=> #<MatchData:0x409879a4>
>> re.match('..')
=> #<MatchData:0x409866a8>


-- 
Regards,
Jason
http://blog.casey-sweat.us/