2016-09-07 4 views
-1

私はページングのためにカミナリを使用しているレールアプリケーションがあります。レールのgsubの正規表現

何とかkaminariがハイパーリンクに間違ったURLを使用しています。

今、私はいくつかの正規表現& gsubbingが必要な簡単な修正を探しています。

私は雷からこのURLがあります。

"/bookings/hotels//Pune?arrival_date=....." 

を、私はこの部分を置き換えたい - これで/hotels//Pune? - /hotels?

Puneの場所(それが変更される場合があります)で他の文字列があるかもしれません。

どうすればよいですか?

答えて

1

キャプチャやURLをいじりとき、私はいつもURI libraryを使用match capture

gsub(/hotels(\/\/\w+)\?/){|m| m.gsub($1, '')} 

str = "/bookings/hotels//Pune?arrival_date=....." 
str.gsub(/hotels(\/\/\w+)\?/){|m| m.gsub($1, '')} 

#=> "/bookings/hotels?arrival_date=....." 
0

gsub( "// Pune"、 "") ここに4つの正規表現は必要ありません。

+0

私はプネーの部分がダイナミックであると言及しなかったので、申し訳ありません。 質問を編集します。 – RamanSM

1

を使用して置き換え、それは(クエリ文字列が含まれている場合は特に)あなたのための取材の一部を行います。

このようなものがあなたの状況に合っていますが、最初に適切なURLを取得する方法はおそらくあります。

require 'uri' # probably not necessary if you are using Rails 

old_url = "/bookings/hotels//Pune?arrival_date=blahblah" 
uri  = URI(old_url) 

# remove everything between the first double '//' and the end of the string 
uri.path = uri.path.gsub(/\/\/.+\Z/, '') 
# => "/bookings/hotels" 

# output a new url using the new path but including the original query string 
new_url = uri.to_s 
# => "/bookings/hotels?arrival_date=blahblah" 
関連する問題