これが私の正規表現です:
s = /(?<head>http|https):\/\/(?<host>[^\/]+)/.match("http://www.myhost.com")
head
およびhost
グループを取得するにはどうすればよいですか?
s['head'] => "http"
s['host'] => "www.myhost.com"
URIを使用することもできます...
1.9.3p327 > require 'uri'
=> true
1.9.3p327 > u = URI.parse("http://www.myhost.com")
=> #<URI::HTTP:0x007f8bca2239b0 URL:http://www.myhost.com>
1.9.3p327 > u.scheme
=> "http"
1.9.3p327 > u.host
=> "www.myhost.com"
使用captures
>>
string = ...
one, two, three = string.match(/pattern/).captures
上記のように、この目的にはおそらく uri ライブラリを使用する必要がありますが、文字列を正規表現に一致させるときはいつでも、特別な変数を使用してキャプチャされた値を取得できます。
"foo bar baz" =~ /(バー)\s(バズ)/
$1
=>「バー」
$2
=>「バズ」
等々...