Ruby сопоставляет и печатает несколько строк в данных - PullRequest
1 голос
/ 04 марта 2012

У меня есть файл hashes.xml в Интернете.Я хочу разобрать его для полей name='hash'><string>78235A2449BA7188CBF95F7DD2D40A36</string>, файл имеет много полей с этим шаблоном (хеш MD5 - только пример, они отличаются в XML-документе), я хочу получить их все и распечатать на стандартный вывод.Насколько я понимаю, это получить первый случай и распечатать его, затем я застрял.

for locale in (locales)
  while hash.nil? do
    headers = {
      'Host' => server,
      'Content-Type' => 'application/x-www-form-urlencoded',
      'Content-Length' => locale.length.to_s,
    }

    resp, data = http.post(path, locale, headers)

    # Extract the hash
    data =~ /name='hash'\>\<string\>([A-F0-9]+).*\<\/string\>/m
    hash = $1
    mylocale = locale
    break if hash.nil?
  end
end

if hash.nil?
  puts "ERROR"
  exit(1)
end

puts "Hash: "+hash

1 Ответ

0 голосов
/ 04 марта 2012

вы ищете метод сканирования:

a =<<END
this is some example name='hash'><string>AAAAAA224</string>

name='hash'><string>AAAAAA224</string>
vname='hash'><string>AAAAAA224</string>
example  for you name='hash'><string>666</string>

END

m = a.scan(/name='hash'><string>[A-F0-9]+.*<\/string>/)

puts m.inspect

Результат:

["name='hash'><string>AAAAAA224</string>", "name='hash'><string>AAAAAA224</string>", "name='hash'><string>AAAAAA224</string>", "name='hash'><string>666</string>"]

Вы также можете увидеть эту запись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...