2012-08-08 2 views
-2

Я следующее регулярное выражение:Regex улучшение

/%%[\s\S]*?%%/i

Это означало, чтобы поймать этих типов строк:

%%test%%

%%test2%%

Однако, поскольку регулярное выражение работает на большие строки, иногда бывают ошибки, например, если у меня есть это:

%test%% adhja kshdjah skdja %%test1%% вернет %% adhja kshdjah skdja %%

Струны, что он должен поймать никогда не имеет места в них, как я могу изменить мое регулярное выражение, чтобы принимать только те, без пробелов?

+0

'[\ s \ S]' совпадение пробелов и пробелов? равным '.'? –

+0

Я не вижу ничего плохого в вашем «неправильном» примере. У вас есть только один '%' в начале, так что фракция будет соответствовать, как вы можете видеть. –

ответ

1

Использовать [^%\s] для не space и не %.

/%%[^%\s]*?%%/ 
+0

Если в ограничителях '%%' можно указывать знаки с одним процентом, вы можете просто вынуть знак процента после '^'. – tripleee

Смежные вопросы