2013-03-14 1 views
0

Скажите, что данный URL-адрес файла JS/CSS иногда заканчивается символом '? V = xyz' или таким.PCRE, соответствующий URL-адресу с аргументами или без них

Как захватить оба случая в PCRE, то есть, для

"/my/path/lib.js" 

Следующая

"\.[js|css]$" 

работает просто отлично. И я хотел бы включать такие случаи, как:

"/my/path/lib.js?v=1.4" 

и

"/my/path/style.css?v=3" 

Я использую Lua-5,1 PCRE LIB

> rex_pcre = require "rex_pcre" 
> return rex_pcre.find("/my/path/jquery.css", "\.(?:js|css)(?:$|\?)") 
stdin:1: nothing to repeat (pattern offset: 17) 
stack traceback: 
     [C]: in function 'find' 
     stdin:1: in main chunk 
     [C]: ? 

ответ

1

Вы могли бы использовать:

\.(?:js|css)(?:$|\?) 

Обратите внимание, что [js|css] не является что вы думаете. Это класс символов и он соответствует одному из символов cjs|, вы хотите группу: (?:js|css).

+0

Пробовал это и получить ошибку «ничего не повторять», например добавленный –

+0

@TzuryBarYochay, как вы его использовали? Я не вижу ничего плохого в этом выражении. Убедитесь, что вы приводите его правильно. Например, вам может понадобиться избежать всех обратных косых черт, используйте \\ вместо \ – Qtax

+0

@TzuryBarYochay, используйте '' \\. (?: js | css) (?: $ | \\?) "' – Qtax