On 10/18/07, Gena Makhomed <makhomed@xxxxxxxxxxxxxx> wrote:
> если это действительно так, тогда может быть имеет смысл внутри nginx
> регулярные выражения вида ~ \.php$ обрабатывать не через библиотеку pcre
> а специально оптимизированной для такого случая функцией "сопоставления"?
Насколько я понимаю, нормальная библиотека регексов должна и так
оптимизировать разные частые варианты, типа "строка в конце".
Перловый регексер так и делает:
=== test-re-opt.pl ===
#! /usr/bin/perl -w
use strict;
use re 'debug';
my $sample = "index.php";
if ($sample =~ /\.php$/) {
print "matched\n";
} else {
print "not matched\n";
}
=== /test-re-opt.pl ===
выдача:
[alexm@mynd tmp]$ perl test-re-opt.pl
Compiling REx `\.php$'
size 4 Got 36 bytes for offset annotations.
first at 1
1: EXACT <.php>(3)
3: EOL(4)
4: END(0)
anchored ".php"$ at 0 (checking anchored isall) minlen 4
Offsets: [4]
1[5] 0[0] 6[1] 7[0]
Guessing start of match, REx "\.php$" against "index.php"...
Found anchored substr ".php"$ at offset 5...
Starting position does not contradict /^/m...
Guessed: match at offset 5
matched
Freeing REx: `"\\.php$"'
как-то так....
--
Алексей Махоткин
http://squadette.ru/