2016-05-16 4 views
-2

Rubyで文字列内の部分文字列をフィールド名として抽出するにはどうすればよいですか?正規表現を使用してRubyで部分文字列を抽出します

出力例:名=> 6

フィールドanmeとフィールド値、フィルタ後の としてマッチパターンを取得する方法を
A-field:name.23.134 => 6 

ruby { 
     code => " 

      if key =~ /^A-field:[A-Za-z]+/ then 
        #how to get the match pattern ?and the field value ?      

       end 


} 

、それはだが

A-フィールドのように見えるだろう

答えて

0

は別に、フィールド名と値を取得します正規表現です:

text = "A-field:name.23.134 => 6" 
matches = text.match(/([^:]+:[^=\.\s]+)(\.\d+)*\s*=>\s*(.+)/) 
puts "Field: #{matches[1]}" 
puts "Value: #{matches[3]}" 
puts "#{matches[1]} => #{matches[3]}" 

これの出力は次のとおりです。

Field: A-field:name 
Value: 6 
A-field:name => 6 
1

問題は明確ではないが、以下のように仮定して
1列は

number_to_capture(FIELD1).numbers_to_ignore =>の形であります

これを試してください。

string = "A-field:name.23.134 => 6" 
matchdata = string.match /(?<field1>[^.]*).*(?<field2>=>.*)/ 
matchData[1] 
>> "A-field:name" # same result as matchData["field1"] 
matchData[2] 
>> "=> 6" # same result as matchData["field2"] 

または簡単な形式で、あなたはまだ、フィールド名を除いて同じ出力を与えるこの

/([^.]*).*(=>.*)/ 

のような正規表現を使用することができます。

最初のカッコは、ドット以外のすべての文字を '=>'文字の前にキャプチャします。次に、2番目の括弧は '=>'で始まるすべての文字を取得します。

これが役に立ちます。ここで

関連する問題