From: "David A. Black" Date: 2005-05-18T22:19:13+09:00 Subject: Re: Variable substitution in a regex Hi -- On Wed, 18 May 2005, Steve Callaway wrote: > Yeah, straightforward enough, moreover you can process > an array of vars as in the snippet I put up on > Rubyforge: > > # function to regexp vars > def is_element_in_string?(in_string, in_array) > in_array.each do |line| > rx_test = /#{line}/ > if in_string =~ rx_test > return true > end > end > return false > end Let Ruby do the work for you :-) def is_element_in_string?(str, elements) elements.any? {|e| /#{e}/.match(str) } end > # as an example we may wish to see whether a list of > football match results > # contains a result of a team we are interested in > varray = Array.new > # now populate the array with reegxps you wish to > match... > varray = ["Plymouth Argyle", "Blackburn Rovers" , > "Manchester .*", "Tott.*"] You're not populating the array; you're discarding the array and creating a completely new one :-) The array you created previously ceases to exist. You can either just leave out that first assignment, or if you have some reason to create and populate the array in two steps, you could do: varray = Array.new varray.replace(["Plymouth ...", "...", ...]) but I can't think of any reason to do that. I would just assign the array to the variable, as in your second assignment. David -- David A. Black dblack@wobblini.net