如何使用正则表达式(ruby)解析此文本?

时间:2010-09-26 03:21:52

标签: ruby regex

http://services.tvrage.com/tools/quickinfo.php?show=Chuck

我正在尝试解析该信息,例如,获取Airtime,

  

播音时间@星期一晚上8点

我想在“Airtime @”之后得到直到行尾,以便在“星期一晚上8点00分”出来。我怎么能这样做?

5 个答案:

答案 0 :(得分:3)

您是否有任何理由不使用XML Feed?

require 'open-uri'
require 'nokogiri'

d = Nokogiri.XML(open 'http://services.tvrage.com/feeds/showinfo.php?sid=15614')

name = d.search('//showname').text               # => 'Chuck'
day  = d.search('//airday').text                 # => 'Monday'
time = d.search('//airtime').text                # => '20:00'
net  = d.search('//network[@country="US"]').text # => 'NBC'

puts "#{name} airs #{day}s at #{time} on #{net}."
# Chuck airs Mondays at 20:00 on NBC.

答案 1 :(得分:2)

result = allyourtextdata[/Airtime@(.+)/,1]

或者,如果您还要使用此报告中的其他字符串:

hash = Hash[allyourtextdata.scan(/(.+?)@(.+)/)]
p hash["Airtime"] # this will print "Monday at 08:00 pm"

答案 2 :(得分:1)

require 'net/http'
url=URI.parse('http://services.tvrage.com/tools/quickinfo.php?show=Chuck')
response = Net::HTTP.get_response(url)
data=response.body
puts data.scan(/.*Airtime@(.*)\n/)

答案 3 :(得分:0)

为何选择正则表达式?获得子串的任何问题?

s = "Airtime@Monday at 08:00 pm"
puts s[8..-1] # => Monday at 08:00 pm

修改
好的,这是其他选项

puts s[s.index('@') + 1..-1]

答案 4 :(得分:-1)

这是一个测试ruby正则表达式的好网站:http://rubular.com/