/^[\s\S]*?< *%/
должен делать то, что вы хотите.
^
заставляет его совпадать в начале строки.
[\s\S]
соответствует любому символу.Буквально, это означает любой пробел или непробельный символ, и обходит тот факт, что .
не соответствует символу новой строки.
*?
соответствует нулю или больше, но наименьшее количество, необходимое для остальной части шаблона, чтобыmatch.
<
соответствует литералу '<
'
*
(обратите внимание на пробел) соответствует нулю или большему количеству пробелов.Это более читабельно, если записано как [ ]*
.
%
, наконец, соответствует этому символу.
Если вы хотите сопоставить всю строку (т.е. %
должен быть последним символомв строке), тогда вы можете поставить $
перед последним /
.