Welcome! Log In Create A New Profile

Advanced

Re: Обнуление выделений при использовании map

Maxim Dounin
May 22, 2020 08:34AM
Hello!

On Thu, May 21, 2020 at 10:33:25PM -0400, gz wrote:

> При использовании регулярных выражений в map обнуляются выделения уровня
> location, даже в случае, если в выражениях map не используются выделения.

[...]

> Из формулировки в документации складывается ощущение, что значения
> позиционных выделений location'а будут переопределены если они используются
> в map.
> Но если их в map нет, странно получать пустые значения.
>
> Я неправильно понимаю документацию или это ошибка?

Ощущение складывается неправильное, переменные $1..$9 всегда
относятся к последнему поматчившемуся регулярному выражению. Если
в этом последнем выполненном регулярном выражении выделений нет
(или конкретное выделение не поматчилось, например, из-за
ветвлений), то они будут пустыми.

Это общий принцип работы переменных $1..$9 приблизительно везде,
так что он, видимо, в явном виде в документации не описан.
Скажем, в перле то же самое можно пронаблюдать так:

$ echo foobar | perl -nle 'm/(...)/; print "match: $1"; m/foo/; print "match: $1";'
match: foo
match:

С учётом декларативной природы конфигурации nginx'а - такое
поведение делат переменные $1..$9 малопригодными для использования
в сложных конфигурациях. Особенно следует быть осторожным при
использовании $1..$9, если значения получены из регулярных
выражений в server_name или location: работать будет только в
совсем простых конфигурациях. В сколько-нибудь сложных случаях
правильно, если есть необходимость использовать выделения,
использовать именованные выделения.

--
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Обнуление выделений при использовании map

gz May 21, 2020 10:33PM

Re: Обнуление выделений при использовании map

Maxim Dounin May 22, 2020 08:34AM

Re: Обнуление выделений при использовании map

gz May 24, 2020 08:38PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 94
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready