tags:

views:

37

answers:

2

Hi everyone,

I want to find a given word in a line of text through a regular expression, but the search should not just look for the whole word, but also instances where the word is prefix or sufix, or inside other words. For example (I'm not very creative with examples.. but it should get the point):

Look for green in "I live in evergreen street because green is greentown with tree-greenery. I like green-latex $green-operator^2$"

should return:

evergreen, green, greentown, tree-greenery, green-latex, $green-operator^2$

Ted

+1  A: 

The scan method works. The pattern looks for a run of non-space characters that have the letters green in the run.

irb> s = "I live in evergreen street because " +
         "green is greentown with tree-greenery." +
         " I like green-latex $green-operator^2$"

irb> s.scan(/\S*green\S*/)
=> ["evergreen", "green", "greentown", 
    "tree-greenery.", "green-latex", 
    "$green-operator^2$"]
Paul Rubel
FYI, `[^\s]` can be written more succinctly as `\S`.
sepp2k
fixed, thanks @sepp2k
Paul Rubel
A: 
irb(main):001:0> s = "I live in evergreen street because " +
irb(main):002:0*     "green is greentown with tree-greenery." +
irb(main):003:0*     " I like green-latex $green-operator^2$"

irb(main):004:0> s.split.grep(/green/)
=> ["evergreen", "green", "greentown", "tree-greenery.", "green-latex", "$green-operator^2$"]
Nakilon