Reputation: 10726
I have a String my_string :
[...]
THE_PREFIX value1 THE_SUFFIX
THE_PREFIX value2 THE_SUFFIX
[...]
And I want to get each value ( value1, value2, ...). I tried
my_string.scan(/THE_PREFIX (.*) THE_SUFFIX/m)
but it returns only one String :
value1 THE_SUFFIX THE_PREFIX value2
How could I do that ?
EDIT
Each value contains a lot of special chars. I don't want to do the regexp that match with this
Upvotes: 0
Views: 74
Reputation: 6255
Use reluctant regex quantifier:
irb(main):001:0> a = "THE_PREFIX value1 THE_SUFFIX
irb(main):002:0" THE_PREFIX value2 THE_SUFFIX"
=> "THE_PREFIX value1 THE_SUFFIX\nTHE_PREFIX value2 THE_SUFFIX"
irb(main):003:0> a.scan(/THE_PREFIX (.*) THE_SUFFIX/m)
=> [["value1 THE_SUFFIX\nTHE_PREFIX value2"]]
irb(main):004:0> a.scan(/THE_PREFIX (.*?) THE_SUFFIX/m)
=> [["value1"], ["value2"]]
Upvotes: 1
Reputation: 160549
Your pattern is too loose:
my_string.scan(/THE_PREFIX (\w+) THE_SUFFIX/m)
Returns:
my_string.scan(/THE_PREFIX (\w+) THE_SUFFIX/m)
=> [["value1"], ["value2"]]
Flatten it if you want a single array:
my_string.scan(/THE_PREFIX (\w+) THE_SUFFIX/m).flatten
=> ["value1", "value2"]
Upvotes: 1