Как можно удалить несколько конечных слешей из URL в Ruby - PullRequest
7 голосов
/ 04 мая 2010

То, что я пытаюсь достичь здесь, скажем, у нас есть два примера 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.parse в Ruby очищает определенный тип некорректного URL, но в этом случае неэффективен.

Если мы используем регулярное выражение, то /^(.*)\/$/ удаляет одну косую черту / из url1 и неэффективно для url2.

Кто-нибудь знает, как обрабатывать этот тип парсинга URL?

Суть в том, что я не хочу, чтобы в моей системе http://www.example.com/ и http://www.example.com обрабатывались как два разных URL. И то же самое касается http://emy.dod.com/kaskaa/dkaiad/amaa//// и http://emy.dod.com/kaskaa/dkaiad/amaa/.

Ответы [ 3 ]

25 голосов
/ 04 мая 2010

Если вам просто нужно удалить все косые черты в конце строки URL, вы можете попробовать следующее регулярное выражение:

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

/(\/)+$/ - это регулярное выражение находит одну или несколько косых черт в конце строки. Затем мы заменяем это совпадение пустой строкой.

Надеюсь, это поможет.

4 голосов
/ 25 сентября 2015

Хотя эта тема немного устарела и верхний ответ довольно хорош, но я предлагаю другой способ сделать это:

/^(.*?)\/$/

Вы можете увидеть это в действии здесь: https://regex101.com/r/vC6yX1/2

Волшебство здесь *?, что делает ленивый матч. Таким образом, все выражение можно перевести как:

Подберите как можно меньше символов и захватите их, а в конце сопоставьте как можно больше слешей.

Это означает, что на более простом английском языке удаляются все завершающие косые черты.

0 голосов
/ 19 октября 2018
def without_trailing_slash path
  path[ %r(.*[^/]) ]
end

path = "http://emy.dod.com/kaskaa/dkaiad/amaa//////////"

puts without_trailing_slash path # "http://emy.dod.com/kaskaa/dkaiad/amaa"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...