Я не знаком с C ++ 11, но вижу несколько возможных проблем с вашим шаблоном:
1) Ваши парены обертывают только первый токен из набора ORed - переместите близко кконец рисунка или удалите их целиком. Если вы ищете настоящие символы в скобках, избегайте их там, где они есть. (Обычно с предыдущей обратной косой чертой \)
2) Проверьте правила вашего компилятора по обработке reg-ex. Если C ++ 11 поддерживает «жадное» сопоставление, используйте его - оно всегда будет соответствовать наибольшему совпадению. С другой стороны, если ваш процессор использует упорядочение слева направо, измените ваш шаблон, чтобы поместить многосимвольные операторы ДО односимвольных операторов (== before =, ...), в противном случае более короткий токен совпадет с остальными.
3)! имеет особое значение в шаблоне reg-ex, избегайте его;<и> может также потребоваться экранирование.
4) Ваша строка токенов ORed должна быть заключена в квадратные скобки
Я бы попробовал:
[[0-9]+|[A-Z_a-z][A-Z_a-z0-9]*|==|\!=|\<=|\>=|=|\<|\>]
ИЛИ (если нужна обратная ссылка)
([[0-9]+|[A-Z_a-z][A-Z_a-z0-9]*|==|\!=|\<=|\>=|=|\<|\>])
ИЛИ (если вы ищете настоящих паренов в удостоверении личности)
[\([0-9]+\)|[A-Z_a-z][A-Z_a-z0-9]*|==|\!=|\<=|\>=|=|\<|\>]
Предупреждение: Покупатель остерегается - Я знаюC, C ++ и C #, но не знаю деталей стандарта C ++ 11. Я могу быть совершенно не прав. :-)