parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Про регулярки в парсере

Maxx 17.12.2015 18:21 / 17.12.2015 18:22

Задачка исключительно для примера:

Есть uri - /zero/one/?two=1
Из нее надо получить URL. Можно это сделать с помощью mid и pos но хочется регуляркой. И хочется чтобы это выглядело вот так просто:
$url[^uri.match[^^([^^\?]+)][]{"$match.1"}]
Но так работать не будет, потому что хотя регулярка и отработает, но в результат попадет и хвост тоже

$url "/zero/one/"?two=1

Чтобы этого не произошло, нужно либо изменить регулярку, дописав в нее то, что нам НЕ нужно:
$url[^uri.match[^^([^^\?]+).*][]{"$match.1"}]
Либо написать вот так:
$fake[^request:uri.match[^^([^^\?]+)][]{
		$url[$match.1]
}]
где фейковая переменная нужна только для того, чтобы тот самый хвост не выплюнулся в поток, что конечно тоже некрасиво.

Еще есть вариант с получением таблицы совпадений и ее разбором, но это совсем страх и ужас.

Нельзя ли реализовать нужный вариант
$url[^uri.match[^^([^^\?]+)][]{$match.1}]
то есть чтобы match возвращал только то, что мы ищем, как вариант чтобы такой режим задавался каким нибудь ключом?