如何从字符串中提取子字符串作为Ruby中的字段名?
输出示例:
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
}
如何将匹配模式作为字段anme和字段值, 过滤后,它看起来像
A-field:name => 6
答案 0 :(得分:1)
问题不明确,但假设如下,
1.字符串的形式为(field1).numbers_to_ignore => number_to_capture
你试试这个。
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"]
或以更简单的形式,你可以像这样使用正则表达式
/([^.]*).*(=>.*)/
除了字段名称之外,仍然提供相同的输出。
第一个括号在&#39; =&gt;&#39;之前捕获除点之外的所有字符。字符。然后,第二个括号捕获以&#39; =&gt;&#39;开头的所有字符。
希望这会有所帮助。
答案 1 :(得分: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