使用REGEX解析序列化数据

时间:2014-07-24 07:54:07

标签: regex activerecord ruby-on-rails-4

我已经学会了序列化的错误......现在我必须付钱。在我的数据库中,我有记录,其中String属性如下所示:

"---\n- '0'\n- Tent\n- '0'\n- '0'\n- Sleeping pad\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n"

是否有一种简单的方法可以解析内部的两个项目?在这种情况下,物品是帐篷和睡垫,但请注意,在这些长串中,可以隐藏任意数量的物品......

仅供参考,这是Ruby on Rails 4。

2 个答案:

答案 0 :(得分:1)

好对不起,不是为了窃取任何人的雷声,但我根本就不知道RegEx,所以我不知道放哪行代码。我最终使用纯红宝石的方式,只是:

long_string = "---\n- '0'\n- Tent\n- '0'\n- '0'\n- Sleeping pad\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n- '0'\n"
new_array = long_string.split("\n- ")
#mimic what the serialization function does, which is splitting up each of the items with the "\n- " thing

new_array.select! { |t| ("A".."Z").include? t[0] }
#select only elements of the newly created array where the first character is a capital letter, since it works out that all my items would start with a capital letter

本案例中的输出为=> ["Tent", "Sleeping pad"]

答案 1 :(得分:0)

使用此条目,您需要以下字符串来填充这些单词

(?<=^|\\n-\s)([\p{L} ]+?)(?=\\n)

如果你没有&#34;懒惰&#34;。

,请使用此功能
(?<=^|\\n-\s)([a-zA-Z ]+?)(?=\\n)