Как сказал другой, но чтобы сделать это быстрее:
<([^>]*)>
Таким образом, регулярное выражение не должно будет возвращаться (с другими предложенными регулярными выражениями регулярное выражение будет соответствовать всей строке изатем начнется откат, чтобы найти >
)
Я добавлю, что по историческим причинам между .
и, например, [\s\S]
есть небольшие различия.Оба поймали всех персонажей, кроме \n
.Первый (.
) не улавливает это.Таким образом, используя [^>]
, вы ловите \n
, но это не должно быть проблемой для того, что вы делаете.http://www.regular -expressions.info / dot.html
Просто чтобы быть полным, потому что это проблема, которая часто случается, есть другой вариант:
<((?:(?!>).)*)>
(вы можете заменить .
на [\s\S]
, если хотите, или использовать опцию SingleLine, если ваш язык поддерживает это, чтобы .
вел себя по-другому).Дело в том, что выражение «стоп» может быть длиннее одного символа.Вместо (?!>) Вы могли бы вставить (?!%%)
, и он остановился бы на %%
.НО я не уверен, что этот вариант работает с Erlang (я не заметил новый тег ... Его не было, когда я первоначально прочитал вопрос, и я не программист Erlang ... И, по крайней мере, кажется,два программиста Erlang имеют разные мнения по поводу аргумента :-))