Regex для обрезания строки в nginx - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь использовать функции кэширования nginx, однако у нас есть конечная точка, которая использует широту и долготу, поэтому для увеличения коэффициента попадания в кэш мы должны усечь широту и долготу.

Я создал карту, чтобы игнорировать последние две цифры широты.Проблема в том, что карта не работает, она всегда возвращает исходную широту (45.45452).

Рассмотрим $ arg_latitude, равный 45.45452, ожидаемый результат - 45.45.

map $arg_latitude $rounded_latitude {
    default $arg_latitude;
    ~\d+\.\d\d $arg_latitude;
}

Любая идея, почемуне работает?

1 Ответ

0 голосов
/ 25 сентября 2018

Результат вашего map всегда является исходным значением $arg_latitude, потому что это значение, которое вы вставили в правый столбец.

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

Например:

map $arg_latitude $rounded_latitude {
    default                 $arg_latitude;
    ~^(?<rounded>\d+\.\d\d) $rounded;
}

Рекомендуется использовать именованный захват, поскольку числовой захват может не входить в область действия в точке, где $rounded_latitude оценивается.

Подробнее см. в этом документе .

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