Dave Thacker <dthacker / bluestrain.net> wrote:
> I need to search a roster file (plain text) to match for a player name.   I 
> tried this:
> 
> dthacker@buckbeak:~/learning/ruby$ irb
> irb(main):001:0> player="S_Avrul"
> => "S_Avrul"
> irb(main):002:0> player_line="S_Avrul ger 25 R 1 2 3 7 40 35"
> => "S_Avrul ger 25 R 1 2 3 7 40 35"
> irb(main):003:0> re=/player/
> => /player/
> irb(main):004:0> re.match(player_line)
> => nil
> irb(main):005:0>             
> 
> How can I use the value of "player" to create the regex?

You can use #{} substitution in a Regexp, the same way you can in a
string. Thus re=/#{player}/. You can also use Regexp.new to construct
a regexp from a string. (So you can do ordinary string manipulations
to construct the regexp as a string, then turn that into a regexp.)

Both of these will treat any metacharacters in the string as
metacharacters (e.g. A "." in the string will match any character). To
avoid this problem, use Regexp.escape.

--Ken

-- 
Ken (Chanoch) Bloom. PhD candidate. Linguistic Cognition Laboratory.
Department of Computer Science. Illinois Institute of Technology.
http://www.iit.edu/~kbloom1/