使用正则表达式从字符串中获取值

时间:2015-03-16 22:36:13

标签: ruby regex

我的数据库中有这个字符串......

"[{:@error=>"Invalid information was sent: ''.  Check the attribute for correct input value."}, {:@error=>"Invalid phone number: "}, {:@error=>"Invalid address: "}]"

我想解析它,只显示@error=>内的字符串。

与此类似的东西

  • "发送的信息无效:''。检查属性是否输入正确的值。"
  • "电话号码无效:"
  • "地址无效:"

从前面的例子中我尝试使用这样的东西......

string.scan(/'([^']+)'/).flatten.map{ |msg| msg.gsub(/(\.|\s+)/, ' ').strip } 

但是这返回了一个空数组。

1 个答案:

答案 0 :(得分:1)

您可以使用这样的简单正则表达式:

@error=>"(.*?)"

<强> Working demo

匹配信息

MATCH 1
1.  [12-91] `Invalid information was sent: ''.  Check the attribute for correct input value.`
MATCH 2
1.  [106-128]   `Invalid phone number: `
MATCH 3
1.  [143-160]   `Invalid address: `