2011-03-11 30 views
2

我想从这个字符串拉照片ID:30280如何在正则表达式中使用变量?

"--- !ruby/struct:PhotoJob \nimage_id: 30280\n" 

我见过这种在正则表达式做事情之前,你可以寻找符合像/nimage_id: \d/,然后返回,一对夫妇的参数\d

如何从该字符串中返回/d30280

回答

1

使用小组赛"--- !ruby/struct:PhotoJob \nimage_id: 30280\n".scan(/image_id: (\d+)/)[0]

>> matches = "--- !ruby/struct:PhotoJob \nimage_id: 30280\n".match(/struct:(.*) .*image_id: (\d+)/m) 
=> #<MatchData "struct:PhotoJob \nimage_id: 30280" 1:"PhotoJob" 2:"30280"> 
>> matches[1] 
=> "PhotoJob" 
>> matches[2] 
=> "30280" 
+0

我想你的意思是[0]? – fl00r 2011-03-11 18:01:33

+0

当然错过了这个,1是使用匹配时 – mpapis 2011-03-11 18:02:09

+0

感谢mpapis!现在我达到了3级程序员的地位。 – Trip 2011-03-11 18:15:01

1
str = "--- !ruby/struct:PhotoJob \nimage_id: 30280\n" 
image_id = str.scan(/\d+/)[0] 
#=> "30280" 
1
RE = '\nimage_id: (\d+)\n' 

由各地\ d +括号中定义的组捕获数量

5

有什么好笑的是,你有一个Ruby结构存在,所以你可以执行以下操作并让YAML负责解析。

PhotoJob = Struct.new(:image_id) 
job = YAML.load("--- !ruby/struct:PhotoJob \nimage_id: 30280\n") 
job.image_id 
=> 30280 
+0

:) coool。最好的一个 – fl00r 2011-03-11 18:11:21

+0

哇超级野兽的答案。非常感谢! – Trip 2011-03-11 18:15:54

+0

+1。我看到它是YAML马上。做好正确的处理数据的方法。 – 2011-03-12 04:28:12

相关问题