PCRE named captures sill counted in numerical variables list

Maxim Dounin mdounin at mdounin.ru
Thu Apr 3 13:21:49 UTC 2014


On Thu, Apr 03, 2014 at 03:08:14PM +0200, B.R. wrote:

> I tried to configure the following location with something like:
> location ~*
> "^/([[:alpha:]]{1,8}(?<subtag>-[[:alpha:]]{1,8})?)(/.*[^/])?/?$" {
>         try_files $uri $uri/  $2/?lang=$1&$args;
> }
> ​However, the $2 variable does not catch the last part of the URI as
> expected (either it catches the named capture or nothing at all, that I do
> not know nor care).​
> ​Using $3 instead of $2 does the job.​
> ​I thought that using named captures allowed for those capture not to be
> counted in numerical variable​
> ​.
>> ​Am I wrong expecting that?

Yes, you are wrong, "man perlre" says:

       Named groups count in absolute and relative
       numbering, and so can also be referred to by those numbers.

The same does "man pcrepattern":

       Named  capturing parentheses are still allocated numbers
       as well as names, exactly as if the names were not  present.

>From pattern point of view, it's just an human-friendly alias for 
a capture.

Maxim Dounin

More information about the nginx mailing list