C++ regex 将正则表达式转换为 C++ 代码

c++ regex convert regex to c++ code

第一次正则表达式(在 C++ 中)

我写得很辛苦

(?<=name=")(?:[^\"]+|\.)*(?=")

匹配例如 name="blabla" xyz as blabla as code... 我如何

std::regex  TheName("(?<=name=")(?:[^\"]+|\.)*(?=")");

请问正确吗?

您需要在 C++ 正则表达式中使用捕获而不是正面回顾。此外,建议使用展开循环原则展开 ([^"\]|\.)* 子模式以使正则表达式尽可能快,请参阅 [^\"\]*(?:\.[^\"\]*)*。此外,建议在定义正则表达式模式时使用原始字符串文字(参见 R"(<PATTERN>)")以避免过度转义。

C++ demo

#include <iostream>
#include <regex>
using namespace std;

int main() {
    std::string s = "name=\"bla \\"bla\\"\"";
    std::regex TheName(R"(name=\"([^\"\]*(?:\.[^\"\]*)*)\")");
    std::smatch m;
    if (regex_search(s, m, TheName)) {
            std::cout << m[1].str() << std::endl;
    }
    return 0;
}

结果:bla \"bla\"