2011-03-23 34 views
1

我正在使用boost庫來解析文件。它知道當你使用圓括號時,它表示正則表達式中的子表達式。如果我的文件包含括號,我將如何聲明一個正則表達式?我嘗試使用\(沒有運氣。任何人都可以告訴我,我應該如何爲以下格式的文件聲明一個正則表達式?如何使用正則表達式匹配括號?

a:(1) 
b:(2) 

我能夠做分析時,文件內容是

a:1 
b:2 

通過聲明正則表達式爲boost::regex e("([a-z]):([0-9])"); 你能告訴我怎麼也可以匹配,如果值在大括號?

+0

我試圖\\(但沒有運氣.. – Ambi 2011-03-23 10:18:11

回答

13

如果你想使用圓括號,你需要用反斜槓來轉義它們。問題是你也需要轉義該反斜槓(對於C++編譯器)。例如:

std::string regexstring = "\\([a-z]\\):\\([0-9]\\)"; 
+0

非常感謝這個問題來到了,當我從C#正則表達式模式轉移到C++,我不知道該編譯器對待他們不同。對於搜索的人來說,這會修復警告'C4129:'(':無法識別的字符轉義序列'。 – 2015-08-18 23:20:55