簡體   English   中英

帶有捕獲組的 C++ 正則表達式字符串文字

[英]C++ regex string literal with capturing group

我有一個包含反斜杠、雙引號的 std::string。 我想使用捕獲組提取子字符串,但我無法獲得正確的語法。 例如

std::string str(R"(some\"string"name":"john"\"lastname":"doe")");  //==> want to extract "john"
std::regex re(R"(some\"string"name":")"(.*)R"("\"lastname":"doe")");    //==> wrong syntax

std::smatch match;
std::string name;
if (std::regex_search(str, match, re) && match.size() > 1)
{
    name = match.str(1);
}
  1. 使用不在字符串中出現的分隔符。 例如R"~( .... )~"

  2. 您仍然需要為正則表達式轉義\\ 要匹配\\字面上使用\\\\

  3. 您可能希望在找到最短的匹配項后立即停止。 所以使用(.*?)

     std::regex re(R"~(some\\\\"string"name":"(.*?)"\\\\"lastname":"doe")~");

暫無
暫無

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

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