[英]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.