2012-07-25 108 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#\:]"