Звучит так, как будто вы хотите сопоставить строки, содержащие >
, но не <
.Этот шаблон будет делать это:
/^(?=.*>)[^<]+$/
Однако мне любопытно, почему вы хотите это сделать.Звучит подозрительно, будто вы пытаетесь проанализировать HTML с помощью регулярных выражений, которые обычно являются плохой идеей.
РЕДАКТИРОВАТЬ:
Теперь стало понятнее, что вы пытаетесь сделать, но вы должны знать, что это расширяет границы возможностей регулярных выражений.Они не могут реально отличить объявление шаблона от текста с угловыми скобками, но если вы знаете, что все объявления шаблона соответствуют очень специфическому шаблону, вы можете довольно хорошо их поймать.
Если все ваши объявления шаблонов следуют шаблону <[0-9]+template>
, вы можете сделать это:
/^.*(?<!<\d+template)>.*$/
Если ваши шаблоны не следуют такому строгому соглашению, вам нужен настоящий синтаксический анализатор C ++ для этого.Для регулярного выражения будет невозможно определить разницу между объявлением шаблона и этим:
a=b<c>d;
... который является допустимым кодом на C ++ (я полагаю, перевод a = (b < c) > d;
).