2012-07-25 110 views
2

我有这行代码C++的正则表达式无效字符(冒号)

regex rgx("([A-Z0-9#\:])"); 

它不断地告诉我,我的结肠是无效字符。 我是否逃脱。 有什么帮助吗? 谢谢!

+0

无关的结肠,但开口的尖括号'['永远不会关闭。 – jogojapan 2012-07-25 02:20:20

+1

哎呀,有一个右括号。错字。 – lorkham 2012-07-25 02:30:33

+1

这是使用新的C++ 11'std :: regex',对吗?在这种情况下,您正在使用的正则表达式的实现很可能不完整。例如。当使用GCC 4.7和'-std = C++ 11'选项时,复杂的字符类在正则表达式中不起作用。 – jogojapan 2012-07-25 02:53:33

回答

3

需要使用反斜杠,如在C++(以及在C)单个反斜杠用于引入特殊字符(例如换行作为"\n")。

尝试:

regex rgx("([A-Z0-9#\\:])"); 
0

您正在尝试转义冒号字符在字符类别外没有特殊含义。

也许你应该关闭你的角色课程?

"[A-Z0-9#\:]"