2011-03-11 35 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

相關問題