1

これが私の正規表現です:

s = /(?<head>http|https):\/\/(?<host>[^\/]+)/.match("http://www.myhost.com")

headおよびhostグループを取得するにはどうすればよいですか?

4

3 に答える 3

5
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" 
于 2012-11-27T23:59:01.510 に答える
2

使用captures>>

string = ...
one, two, three = string.match(/pattern/).captures
于 2012-11-28T00:01:17.037 に答える
0

上記のように、この目的にはおそらく uri ライブラリを使用する必要がありますが、文字列を正規表現に一致させるときはいつでも、特別な変数を使用してキャプチャされた値を取得できます。

"foo bar baz" =~ /(バー)\s(バズ)/

$1

=>「バー」

$2

=>「バズ」

等々...

于 2012-11-28T04:22:20.973 に答える