регулярное выражение ruby для бэк-инженера, чтобы найти маршрут

#ruby-on-rails #ruby #regex

#ruby-on-rails #ruby #регулярное выражение

Вопрос:

Итак, у меня есть это:

 http://load-balancer:1234/users/123/convert_to_buyer/7654
  

и я хочу преобразовать в исходный маршрут без цифры в :

 users/_/convert_to_buyer/_
  

У меня есть это

 url_with_digits.tr('^A-Za-z///_/', '')
  

но этого недостаточно -> "http//loadbalancer/users//convert_to_buyer/"

Ответ №1:

Я бы использовал URI ruby.

 require 'uri'
url = URI.parse("http://load-balancer:1234/users/123/convert_to_buyer/7654")
result = url.path.gsub(/d /, "_")
#=> "/users/_/convert_to_buyer/_"
  

Таким образом, вам не нужно иметь сложное регулярное выражение для обработки разных схем URL (перед путем)

Ответ №2:

Вариант 1: /users/convert_to_buyer

Если вы хотите просто преобразовать строку в /users/convert_to_buyer , это сделает это:

 result = subject.gsub(//d |http://[^/]*/, '')
  

В демо-версии см. Замены внизу.

Вариант 2: users/_/convert_to_buyer/_

Если вы говорите о замене цифр символами подчеркивания и удалении заголовка, соедините его в цепочку или сделайте это в два этапа:

 result = subject.gsub(//d /, '_').gsub(/http://[^/]*/, '')
  

Объяснение

  • С /d помощью мы сопоставляем косую черту и цифры,
  • | или…
  • http://[^/]* начало URL-адреса…
  • и мы заменяем на пустую строку

Дайте мне знать, если вам нужны какие-либо изменения.