Forum: Ruby Building an array of matching strings.

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.
ljz (Guest)
on 2005-11-21 01:00
(Received via mailing list)
I want to search through a block of text and build an array of all
strings contained within this text that match a given pattern.  I know
the following hack will work, but it seems like a misuse of the gsub
method:

  # Assume that 'text' contains the block of text and that 'pat'
  # is a Regexp instance containing the pattern to match.

  matchingStrings = []
  text.gsub(pat) {
    |m|
    matchingStrings << m
  }

Is there a cleaner and elegant way to do this?

Thanks in advance.
james (Guest)
on 2005-11-21 01:08
(Received via mailing list)
On Nov 20, 2005, at 5:00 PM, Lloyd Z. wrote:

>     |m|
>     matchingStrings << m
>   }
>
> Is there a cleaner and elegant way to do this?

matches = text.scan(...)

Hope that helps.

James Edward G. II
logancapaldo (Guest)
on 2005-11-21 01:08
(Received via mailing list)
On 11/20/05, Lloyd Z. <removed_email_address@domain.invalid> wrote:
> text.gsub(pat) {
> Lloyd Z.
> removed_email_address@domain.invalid
> God bless you.


I think what you want is matchingStrings = text.scan(pat)
ezra (Guest)
on 2005-11-21 01:12
(Received via mailing list)
On Nov 20, 2005, at 3:00 PM, Lloyd Z. wrote:

>     |m|
>     matchingStrings << m
>   }
>
> Is there a cleaner and elegant way to do this?
>
> Thanks in advance.
>


result_array = text.scan(/pat/)


That will build an array in result_array of all the matches to /pat/


HTH-

-Ezra Z.
WebMaster
Yakima Herald-Republic Newspaper
removed_email_address@domain.invalid
509-577-7732
ljz (Guest)
on 2005-11-21 01:20
(Received via mailing list)
Ezra Z. <removed_email_address@domain.invalid> writes:

>>   matchingStrings = []
>
> result_array = text.scan(/pat/)
>
>
> That will build an array in result_array of all the matches to /pat/

Aha!  I had forgotten about the 'scan' method!  Thanks to all of you who
responded.
tomrossi7 (Guest)
on 2005-11-21 04:57
(Received via mailing list)
What if we wanted to expand it a little?  For instance, Iets say the
person has a typo like phat instead of pat.  Is there a good method for
searching and returning CLOSEST matches but not exact?
This topic is locked and can not be replied to.