Forum: Ruby Regular Expression {m,n}

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Cf63da956b6ba955687a2f2f262928cb?d=identicon&s=25 Mmcolli00 Mom (mmcolli00)
on 2009-01-19 21:46
File.open("patientrecords.txt", 'r') do |p|
  if p.gets =~ /%{2,3}PersonID/   then
   puts "PersonID exist twice"
  end
 end

Hi.
This is supposed to tell me if there a line in my text file that
contains 'PersonID' at least 2 times and at most 3 times. I have been
playing with regular expressions and thinking {m,n} would help with
this. This snippet is used to show me if it will actually work. (Some
lines contain PersonID only once, I do not want to use those lines)

Thanks, MC
E0d864d9677f3c1482a20152b7cac0e2?d=identicon&s=25 Robert Klemme (Guest)
on 2009-01-19 22:55
(Received via mailing list)
On 19.01.2009 21:45, Mmcolli00 Mom wrote:
> File.open("patientrecords.txt", 'r') do |p|
>   if p.gets =~ /%{2,3}PersonID/   then
>    puts "PersonID exist twice"

That output would be wrong, even if your matching would work the way you
want it to.

>   end
>  end
>
> This is supposed to tell me if there a line in my text file that
> contains 'PersonID' at least 2 times and at most 3 times.

It won't work.  {m,n} needs to be placed *after* the bit you want to
repeat.  Also, it will match only immediate repetition unless you take
measures to avoid that.

Having said that using scan(/PersonID/).size is probably simpler...

> I have been
> playing with regular expressions and thinking {m,n} would help with
> this. This snippet is used to show me if it will actually work. (Some
> lines contain PersonID only once, I do not want to use those lines)

I can't seem to find a question in your posting...

Cheers

  robert
Cf63da956b6ba955687a2f2f262928cb?d=identicon&s=25 Mmcolli00 Mom (mmcolli00)
on 2009-01-19 23:04
Thanks for pointing me in the right direction. Its been a long day
already --> maybe that's why I didn't know that I didn't put the
question out there - Yikes. I apologize. Thanks for replying. MC
This topic is locked and can not be replied to.