Вам не нужно регулярное выражение Perl. Вы хотите регулярное выражение, которое Зевс поймет. Хотя они могут называть этот PCRE, даже PCRE не обрабатывает все регулярные выражения Perl.
Большинство ответов здесь неверны, потому что они не думают о различных видах URL, которые вы можете получить в качестве ввода.
- Получить только часть пути URL
- Сопоставьте с частью пути, чтобы найти то, что вам нужно
- Различают пути, оканчивающиеся на имя файла, и пути, которые не
Есть несколько примеров, которые вы можете использовать для начала. Я не использую Зевса и не хочу, поэтому следующая часть зависит от вас:
Я читал, что вы можете передать запрос в программу Perl через Perl Extensions для ZWS, но я был бы удивлен, если бы вам нужно было это сделать. Если вам придется прибегнуть к этому, я бы использовал модуль URI , чтобы проанализировать URI и извлечь путь. Получив это, разделите путь на его компоненты:
use URI;
my $uri = URI->new( ... ); # I don't know how Zeus passes data
my $path = $uri->path;
# undef to handle the leading /
my( undef, @parts ) = split $path, '/';
Как только вы зашли так далеко, вам нужно решить, как вы хотите распознать что-то в качестве каталога. Если вы сопоставляете непосредственно структуру файловой системы, это всего лишь вопрос выталкивания элементов из @parts
до тех пор, пока вы не найдете каталоги, а затем обратный отсчет числа, которое вы хотите пропустить.
Однако я стараюсь это делать, независимо от того, что я вкладываю в программу Perl. Я бы очень постарался, чтобы это было сделано сначала в правилах Зевса. Покажите нам, что у вас есть.