Это потому, что вы перепутали обратную косую черту \
с прямой косой чертой /
.Первые используются для экранирования специальных символов.Итак, измените это:
regex("//<//!",line);
на следующее:
regex("\\<\\!",line);
Тем не менее, <
и !
на самом деле не имеют никакого особого значения в этом контексте, поэтому выможете просто написать:
regex("<!",line);
, если хотите.
Также обратите внимание, что приведенное выше регулярное выражение соответствует двухсимвольной подстроке <!
.Что-то в вашем вопросе заставляет меня думать, что вы, возможно, действительно хотите сопоставить односимвольные подстроки <
и !
по отдельности?Если это так, вы можете использовать синтаксис ...|...
для указания нескольких альтернативных шаблонов:
regex("<|!",line); // matches whatever matches < or matches !
или синтаксис [...]
для указания класса символов:
regex("[<!]",line); // matches a character that is either < or !
(в этом случае эти два синтаксиса эквивалентны).