簡體   English   中英

Boost :: regex的結果奇怪

[英]Strange results with Boost::regex

我在玩Boost :: regex,這是我第一次使用regex和Boost,所以請原諒我這個問題是否真的很愚蠢。
我得到一個具有以下值的NO_MATCH:

actual_name = "q\[0\]123"
user_name   = "q[0]123"

PS在調試器中,當我打印actual_name它顯示q\\\\[0\\\\]123 但是,當我執行actual_name.size()時,結果為9。

這是我的代碼:

boost::regex regexpr( actual_name );
boost::match_results<pstring::const_iterator> what;
boost::regex_match(user_name, what, regexpr);

if(what[0].matched)
{
     // Match found
}
else
{
    // NO_match found
}

我在Rubular.com上嘗試了regular_expression = "q\\[0\\]123"test-string = "q[0]123"的相同組合,並在那里返回Complete_Match。

我想念什么?

"q\\[0\\]123"編譯嗎?

\\[不是反斜杠字符,后跟方括號。 這是一個轉義序列。 我不記得它是一個有效的轉義序列,但是它可能是編譯器中的擴展。

您需要轉義反斜杠,例如"q\\\\[0\\\\]123" ,或使用C ++ 11原始字符串文字,例如R"(q\\[0\\]123)"

如果這是您實際分配給actual_name代碼,那么您似乎並沒有加倍\\\\來保護它們免受C ++編譯器的影響: "q\\\\[0\\\\]123"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM