正则表达式找到一个字符串W Rails红宝石的键?

时间:2017-06-12 01:51:39

标签: ruby regex

给出以下字符串示例:

human_id_2, human_id_44, human_id_3123121, human_id_11111

我试图循环并仅提取ID /整数。

params.each do |key, value|
   if (key.to_s[/human_id_.*/])
     theId= key.to_s[/human_id_.*/]
     ....
   end
end

我期待theId循环播放2号,44号等......

知道为什么theId未正确设置?

3 个答案:

答案 0 :(得分:3)

为什么不将"human_id_"替换为""?不需要为此做正则表达式:

theId = key.gsub("human_id_", "")

答案 1 :(得分:2)

如果有混合物,这将起作用并过滤掉:

string = "human_id_2, blahblah blah_other_stuff234234, human_id_44, what_up_4545, human_id_3123121, human_id_11111, sdjfhksfh$##$4343894"
string.scan(/(?<=human_id_).*?(?!\d)/)

=> ["2", "44", "3123121", "11111"]

注意它如何忽略不需要的数据。

答案 2 :(得分:1)

"human_id_2, human_id_44, human_id_3123121, human_id_11111".scan(/\d+/)
# => ["2", "44", "3123121", "11111"]