1
我有格式如下永久的方式的字符串:C++的regexp到解析嵌套結構
{
First nested string;
{
Second nested string;
}
}
嵌套可以是任意深度。每個子元素都是格式化的右大括號,將兩個空格添加到上一級嵌套和右大括號中。我想要獲得正則表達式允許獲取嵌套數據。例如,對於上面的例子的結果應該是:「」
First nested string;
{
Second nested string;
}
我寫了下面的代碼,使您解析字符串中只有一條線,作爲一種象徵是除換行符之外的任何字符。
regex regEx("\\s*\\{\\s*(.*?)\\s*\\}\\s*");
string testInput =
"{\n"
" First nested string;\n"
" {\n"
" Second nested string;\n"
" }\n"
"}\n";
smatch match;
if (regex_search(testInput, match, regEx))
{
auto result = match[1].str();
}
什麼正則表達式會使它能夠接收嵌套數據? 在此先感謝。
無。你所擁有的不是一種常規語言,雖然一些正則表達式庫將正則表達式擴展到上下文無關語言領域(如本文),但C++標準庫不支持遞歸。您可能對[Boost.Spirit]感興趣(http://www.boost.org/doc/libs/1_57_0/libs/spirit/doc/html/index.html)來解析此問題。 – Wintermute 2015-04-01 17:58:55