2011-05-19 59 views
1

這個正則表達式將在換行符處修剪字符串。
我希望它修剪兩端只有並保留在中間的任何換行符。幫助boost :: regex修剪

string s("  Stack \n Overflow "); 
boost::regex expr("^[ \t]+|[ \t]+$"); 
std::string fmt(""); 
cout << boost::regex_replace(s, expr, fmt) << endl; 

回答

2

如果你想在一開始的正則表達式匹配和輸入字符串的 結束(希望保留圍繞在中間\n空格), \A\z代替^$威力達到目的。
例如:

boost::regex expr("\\A[ \t]+|[ \t]+\\z"); 
+0

這似乎沒有產生一致的結果。試着解析這個例子:string s(「Stack \ n Overflow \ r」) – user754425 2011-05-19 21:22:33

+0

你能告訴你對這個輸入的期望結果嗎? 例如,它在我的環境中產生了結果'「Stack \ n Overflow \ r」'。 – 2011-05-19 22:59:02

+0

我的不好。我想讓你測試的表達式是這個字符串s(「Stack \ n Over \ rflow」)。我得到的結果是這個Stack \ n flowOver – user754425 2011-05-19 23:16:35