2014-10-10 2 views
0

ДанныйПростое регулярное выражение для замены первой части URL

  • http://localhost:3000/something
  • http://www.domainname.com/something
  • https://domainname.com/something

Как выбрать все, что перед /something и заменить его staticpages?

ввода URL является результатом request.referer, но так как вы не можете render request.referer (и я не хочу redirect_to), я пытаюсь вручную построить соответствующий шаблон, используя controller/action где action всегда маршрут , и мне просто нужно заменить домен контроллером staticpages.

ответ

1

Вы можете использовать регулярное выражение как это:

(https?://)(.*?)(/.*) 

Working demo

enter image description here

Как вы можете видеть в разделе Замена, вы можете использовать захват группы и конкатенации строк вы хотите генерировать нужные URL-адреса.

Идея регулярного выражения заключается в том, чтобы захватить строку до и после домена и использовать \1 + staticpages + \3.

Если вы хотите изменить протокол FTP, вы можете играть с захватом индекс группы и использовать эту строку замены:

ftp://\2\3 

Итак, вы бы:

ftp://localhost:3000/something 
ftp://www.domainname.com/something 
ftp://domainname.com/something 
+0

На самом деле мне нужно замените 'https: //' или 'http: //', как бы я это сделал? – james

+0

@james регулярное выражение, которое я написал, имеет 3 группы (1- протокол, 2 - домен, 3 - остальные). Если вы хотите заменить протокол, который вы могли бы сыграть с захватом группового индекса, вы могли бы сделать: 'statictext \ 2 \ 3'. Я опубликовал рабочую демонстрационную ссылку, но вы можете проверить, что я говорю здесь http://regex101.com/r/fV8nC7/2 –

Смежные вопросы