2009-07-30 6 views
5

私は非常に単純な文字列を持っています。私はRubyで解析し、最も洗練されたソリューションを探しています。文字列は、私が持っていると思いますどのような形式 の/xyz/mov/exdaf/daeed.mov?arg1=blabla & arg2に= 3bla3blaRubyでのURL文字列の解析

です: がstring1:/xyz/mov/exdaf/daeed.mov string2:arg1 = blabla & arg2 = 3bla3bla

なので基本的にトークンオン?

しかし、良い例は見つかりません。 ご協力いただければ幸いです。

答えて

10

疑問符の最初の文字列を分割します。

str.split("?") 
=> ["/xyz/mov/exdaf/daeed.mov", "arg1=blabla&arg2=3bla3bla"] 
+3

入力が常にURLの場合は、おそらくURL解析ライブラリが適しています。 –

6

これは、youreのは、組み込みの分割機能、文字列、探しているものをのようだ:

"abc?def".split("?") => ["abc", "def"] 

編集:フン、遅くする;)

10

私は最善の解決策は、と思いますURIモジュールを使用してください。 (あなたは?の右側に一部を取得するためにURI.parse('your_uri_string').queryのようなものを行うことができます。)http://www.ruby-doc.org/stdlib/libdoc/uri/rdoc/

例を参照してください:/^(.*?)\?(.*?)$/

002:0> require 'uri' # or even 'net/http' 
true 
003:0> URI 
URI 
004:0> URI.parse('/xyz/mov/exdaf/daeed.mov?arg1=bla&arg2=asdf') 
#<URI::Generic:0xb7c0a190 URL:/xyz/mov/exdaf/daeed.mov?arg1=bla&arg2=asdf> 
005:0> URI.parse('/xyz/mov/exdaf/daeed.mov?arg1=bla&arg2=asdf').query 
"arg1=bla&arg2=asdf" 
006:0> URI.parse('/xyz/mov/exdaf/daeed.mov?arg1=bla&arg2=asdf').path 
"/xyz/mov/exdaf/daeed.mov" 

をそうしないと、正規表現でキャプチャすることができます。その後、$1$2があなたの望むものです。 (URIはこの場合でも意味をなさない)

+0

あなたは 'net/http'の代わりに 'uri'を要求することができます –

+0

良い点;私はいつもURIを解析した直後に何かをダウンロードするので、私はいつもそれを忘れています。 –