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/