2

文字列内の 2 つの文字間のサブリンクを抽出するにはどうすればよいですか?

たとえば、YouTube の URL から動画 ID を抽出したいとします。

http://www.youtube.com/watch?v=UkzbRkPv4T4&feature=g-all-u

=「 」と最初の「&」記号の間のテキストを希望します。これは「 UkzbRkPv4T4」になります。

4

4 に答える 4

5

正規表現を処理したくない場合は、URLの解析にRubyの標準ライブラリの機能を利用できます。

url = "http://www.youtube.com/watch?v=UkzbRkPv4T4&feature=g-all-u"
video_id = CGI.parse(URI.parse(url).query)['v'][0]
于 2012-09-26T23:31:51.153 に答える
0
require 'uri'

uri = URI("http://www.youtube.com/watch?v=UkzbRkPv4T4&feature=g-all-u")
uri.query
# => "v=UkzbRkPv4T4&feature=g-all-u"
URI.decode_www_form(uri.query)
# => [["v", "UkzbRkPv4T4"], ["feature", "g-all-u"]]
URI.decode_www_form(uri.query).map(&:last)
# => ["UkzbRkPv4T4", "g-all-u"]
URI.decode_www_form(uri.query).assoc("v").last
# => "UkzbRkPv4T4"
于 2013-08-10T11:34:56.410 に答える
0

正規表現が必要です:

uri = 'http://www.youtube.com/watch?v=UkzbRkPv4T4&feature=g-all-u'
m = uri.match /v=(?<id>\w+)&/
if m
  puts m[:id]
end
于 2012-09-26T23:23:07.010 に答える
0

apneadiving のコメントを拡張するだけです。

>> url = "http://www.youtube.com/watch?v=UkzbRkPv4T4&feature=g-all-u"
=> "http://www.youtube.com/watch?v=UkzbRkPv4T4&feature=g-all-u"
>> md = url.match(/v=(.*)&/)
=> #<MatchData "v=UkzbRkPv4T4&" 1:"UkzbRkPv4T4">
>> md[1]
=> "UkzbRkPv4T4"
于 2012-09-26T23:23:50.323 に答える