Как вы используете переменные в регулярных выражениях? - PullRequest
2 голосов
/ 11 марта 2011

Я пытаюсь извлечь из этой строки удостоверение личности с фотографией: 30280:

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

Я уже видел подобные вещи в регулярном выражении, где вы можете найти пару параметров, которые соответствуюткак /nimage_id: \d/, а затем вернуть \d.

Как я могу вернуть /d или число 30280 из этой строки?

Ответы [ 4 ]

5 голосов
/ 11 марта 2011

Забавно, что у вас есть Ruby Struct, так что вы можете сделать следующее и позволить YAML позаботиться о разборе.

PhotoJob = Struct.new(:image_id)
job = YAML.load("--- !ruby/struct:PhotoJob \nimage_id: 30280\n")
job.image_id
=> 30280
1 голос
/ 11 марта 2011

использовать групповые совпадения "--- !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"
1 голос
/ 11 марта 2011
RE = '\nimage_id: (\d+)\n'

Группа, определенная скобками вокруг \ d +, ловит число

1 голос
/ 11 марта 2011
str = "--- !ruby/struct:PhotoJob \nimage_id: 30280\n"
image_id = str.scan(/\d+/)[0]
#=> "30280"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...