On Mar 17, 12:49 pm, John Honovich <jhonov... / gmail.com> wrote: > I want to pull a list of terms and use them to scan documents to > determine if any of those words are present. > > Let's say fruits = ["apples","oranges","grapes"]. > > I do Regexp.union(*fruits). This returns /apples|oranges|grapes/ which > is good. > > Now I want this pattern to be case insensitive, i.e. - > /apples|oranges|grapes/i > > Docs say I can set each argument to case insensitive and then call union > e.g. - Regexp.union(/dogs/, /cats/i) #=> > /(?-mix:dogs)|(?i-mx:cats)/ > > I have been doing fruits.map!{|fruit| Regexp.new(fruit, > Regexp::IGNORECASE)}; Regexp.union(*fruits) > > This seems to work. Is there any better or cleaner way to do this? > > Thanks, > > John > -- > Posted viahttp://www.ruby-forum.com/. I don't know how much better this is, but you could union first, then add the case-insensitivity: fruits = ["apples","oranges","grapes"] r = Regexp.union(*fruits) r = Regexp.new(r.source, Regexp::IGNORECASE) # => /apples|oranges| grapes/i HTH, Chris