2012-01-25 17 views
0

でスキャン "発注":は、私は文字列my_string持つ正規表現

[...] 
THE_PREFIX value1 THE_SUFFIX 
THE_PREFIX value2 THE_SUFFIX 
[...] 

をそして私は、それぞれの値を取得したい(値1、値2、...)。私は

my_string.scan(/THE_PREFIX (.*) THE_SUFFIX/m)

を試みたが、それだけで1つの文字列を返します。

value1 THE_SUFFIX THE_PREFIX value2 

私はそれをどのように行うことができますか?

EDIT

各値は、特殊文字が多く含まれています。私はこの

答えて

1

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"]] 
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"] 
+0

申し訳ありませんが、「value1」が例です。それはたくさんの文字と特殊文字です。私はこれと一致する正規表現をしたくありません – louiscoquio

+0

あなたが探しているものの正確な例を書くことは、常に助けになります。より正確に質問を更新してください。 –