2016-08-26 3 views
0

Текущие URL-адреса:Включая символьной строки в регулярном выражении

http://domain.com/index.php?route=common/home 
http://domain.com/index.php?route=account/register 
http://domain.com/index.php?route=checkout/cart 
http://domain.com/index.php?route=checkout/checkout 

Нужные адреса:

http://domain.com/home 
http://domain.com/register 
http://domain.com/cart 
http://domain.com/checkout 

Regex:

(?=\=)(.*?)(?<=\/).+$ 

... почти работает, но он соответствует (для например, последний URL) =checkout/, тогда как мне нужно, чтобы он соответствовал index.php?route=, поэтому я могу удалить все index.php?route=checkout/ из URL.

Я пробовал index.php?route=(?=\=)(.*?)(?<=\/).+$, но, конечно, он не работает.

+1

Что вы пытаетесь сделать именно? Не ясно. – Cranio

+0

Мое регулярное выражение совпадает с '=' на '?' (Включая оба символа), мне нужно включить 'index.php? Route', а также в совпадение, чтобы я мог заменить всю строку, чтобы новый URL-адрес выглядел как' domain. com/home' – 3zzy

+0

'index.php \? route = [az] * \/$' [RegExr] (http://regexr.com/) - неплохой инструмент. –

ответ

2

Чтобы удалить нужную часть, вы должны заменить:

index.php\?route\=[^\/]*\/ 

с пустой строкой. Чтобы быть более строгим и точным, вы должны использовать просмотр назад:

(?<=http:\/\/domain.com\/)index.php\?route\=[^\/]*\/ 

Проверить регулярное выражение здесь: https://regex101.com/r/sY7aV6/1

+0

Спасибо, но странно, что на http://regexr.com/ он показывает 'error 'для того же – 3zzy

+0

@ 3zzy Я не знаю, работает ли regexr.com с синтаксисом PHP или что-то еще. – Cranio

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