0

以下は私に1つの一致を取得します:

query = http://0.0.0.0:9393/review?first_name=aoeu&last_name=rar
find = /(?<=(\?|\&)).*?(?=(\&|\z))/.match(query)

「検索」を調べると、次のようになります。

first_name=aoeu

「?」の間のすべてを一致させたい と「&」なので、試してみました

find = query.scan(/(?<=(\?|\&)).*?(?=(\&|\z))/)

しかし、「find」を調べると、次のようになります。

[["?", "&"], ["&", ""]]

取得するにはどうすればよいですか:

[first_name=aoeu][last_name=rar]

また

["first_name=aoeu","last_name=rar"]

?

4

3 に答える 3

3

を使用しString#splitます。

query.split(/[&?]/).drop(1)

また

query[/(?<=\?).*/].split("&")

しかし、あなたの本当の目的がURLからパラメータを抽出することである場合、質問とその回答.

于 2012-09-26T07:00:35.773 に答える
3

ruby または rails が提供する他のモジュールを使用すると、コードの保守性と可読性が向上します。

require 'uri'
uri = 'http://0.0.0.0:9393/review?first_name=aoeu&last_name=rar'

require 'rack'
require 'rack/utils'
Rack::Utils.parse_query(URI.parse(uri).query)
# => {"first_name"=>"aoeu", "last_name"=>"rar"}

# or CGI
require 'cgi'
CGI::parse(URI.parse(uri).query)
# => {"first_name"=>["aoeu"], "last_name"=>["rar"]}
于 2012-09-26T07:14:17.613 に答える
0

URI からクエリ パラメータを抽出する必要がある場合は、スレッド「Ruby または Rails を使用して URL から URL パラメータを抽出する方法」を確認してください。. 正規表現を使用しない多くのソリューションが含まれています。

于 2012-09-26T07:12:22.077 に答える