Документ, на который вы ссылаетесь, говорит, что lookaheads поддерживается, поэтому это должно работать:
/<%(?:==|=|#)?(?:(?!%>).)*%>/
(?:(?!%>).)*
позволяет точке совпадать с одним символом за раз, после . Предварительный просмотр гарантирует, что символ не является началом последовательности %>
. Это действительно то, что бы не жадная точка-звезда делала в .*?%>
, если бы поддерживали некожадные квантификаторы.
Кстати, (?:==|=|#)?
на самом деле ничего не делает для вас. Если эта часть требуется, вы должны удалить ?
. Если нет, вы можете также удалить все это; это просто занимает место.