9

ここで達成しようとしているのは、次の 2 つの URL の例があるとします。

url1 = "http://emy.dod.com/kaskaa/dkaiad/amaa//////////"
url2 = "http://www.example.com/"

ストライプ化された URL を抽出するにはどうすればよいですか?

url1 = "http://emy.dod.com/kaskaa/dkaiad/amaa"
url2 = "http://http://www.example.com"

URI.parseRuby では、特定のタイプの不正な URL をサニタイズしますが、この場合は効果がありません。

正規表現を使用すると、から/^(.*)\/$/単一のスラッシュが削除され、./url1url2

このタイプの URL 解析を処理する方法を知っている人はいますか?

http://www.example.com/ここでのポイントは、システムにとhttp://www.example.comを 2 つの異なる URL として扱わせたくないということです。http://emy.dod.com/kaskaa/dkaiad/amaa////と についても同様http://emy.dod.com/kaskaa/dkaiad/amaa/です。

4

3 に答える 3

28

URL 文字列の末尾からすべてのスラッシュを削除する必要がある場合は、次の正規表現を試すことができます。

"http://emy.dod.com/kaskaa/dkaiad/amaa//////////".sub(/(\/)+$/,'')
"http://www.example.com/".sub(/(\/)+$/,'')

/(\/)+$/- この正規表現は、文字列の末尾にある 1 つ以上のスラッシュを検出します。次に、この一致を空の文字列に置き換えます。

お役に立てれば。

于 2010-05-04T13:19:06.623 に答える
4

このスレッドは少し古く、一番上の答えはかなり良いですが、これを行う別の方法をお勧めします:

/^(.*?)\/$/

ここで実際の動作を確認できます: https://regex101.com/r/vC6yX1/2

ここでの魔法*?は、遅延一致を行う です。したがって、式全体は次のように変換できます。

最後にできるだけ多くのスラッシュを一致させながら、できるだけ少ない文字を一致させてキャプチャします。

つまり、より平易な英語では、末尾のスラッシュをすべて削除します。

于 2015-09-25T15:21:48.393 に答える