2012-11-28 45 views
0

我剛剛開始使用boost和C++,並且我努力理解boost的正則表達式引擎在匹配空白時的行爲。如果我使用代碼:Boost正則表達式不匹配「\ s」到空格

boost::regex rx(" "); 
cout << regex_search(" ", rx); 

匹配空格,然後一切按預期工作,regex_search返回true。不過,如果我嘗試用「\ s」更換正則表達式匹配所有空格字符,我從來沒有一場比賽,而下面的代碼總是輸出錯誤:

boost::regex rx("\\s"); 
cout << regex_search(" ", rx); 

缺少什麼我在這裏?

按照要求,這裏是我完整的測試案例:

#include <boost/regex.hpp> 
#include <iostream> 

using namespace std; 

int main() 
{ 
    boost::regex rx("\\s", boost::regex::icase); 
    cout << regex_search(" ", rx); 
} 
+0

你錯過了實際的代碼。編寫一個簡短的程序,編譯,運行並說明問題。 –

+1

此代碼適用於我。 – BatchyX

+0

嗯...我不知道這是我的增強版本的問題,然後(在Windows 7 32位上使用MinGW)。至少你已經證實我對正則表達式的理解沒有任何問題,並且代碼應該工作正常! – ndawson

回答

2

明白了 - 我本來是用從ascend4.org/Binary_installer_for_Boost_on_MinGW預建圖書館。在構建Boost 1.52之後,代碼按預期工作。試圖加快構建過程最終導致我花了幾個小時的挫折......現在我已經吸取了教訓!