Building an array of matching strings


#1

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.


#2

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


#3

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)


#4

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


#5

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.


#6

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?