我有一个String my_string:
[...]
THE_PREFIX value1 THE_SUFFIX
THE_PREFIX value2 THE_SUFFIX
[...]
我想得到每个值(value1,value2,...)。我试过了
my_string.scan(/THE_PREFIX (.*) THE_SUFFIX/m)
但它只返回一个字符串:
value1 THE_SUFFIX THE_PREFIX value2
我怎么能这样做?
修改
每个值都包含许多特殊字符。我不想做与此匹配的正则表达式
答案 0 :(得分:1)
你的图案太松散了:
my_string.scan(/THE_PREFIX (\w+) THE_SUFFIX/m)
返回:
my_string.scan(/THE_PREFIX (\w+) THE_SUFFIX/m)
=> [["value1"], ["value2"]]
如果您想要一个阵列,请将其展平:
my_string.scan(/THE_PREFIX (\w+) THE_SUFFIX/m).flatten
=> ["value1", "value2"]
答案 1 :(得分:1)
使用不情愿的正则表达式量词:
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"]]