正则表达式如何在 Boost Regex C++ 中工作

How does Regex work in Boost Regex C++

我目前正在使用 Boost Regex 库,并试图在 C++ 中获取一个名为 arguments 的函数。例如,我有一个带有 HTML 的页面,并且调用了一个 JavaScript 函数,我们将其命名为

XsrfToken.setToken('54sffds');

我目前拥有的,但没有用。

std::string response = request->getResponse();

boost::regex expression;

if (type == "CSRF") {
    expression = {"XsrfToken.setToken\('(.*?)'\)"};
}

boost::smatch results;

if (boost::regex_search(response, results, expression)) {
    std::cout << results[0] << " TOKEN" << std::endl;
}

其中 response 是 HTML 网页,expression 是正则表达式。条件语句是 运行,因此我认为我的正则表达式有问题,但我不知道。

[已编辑]

忘记提及该正则表达式是从 PHP 中提取的,并在 PHP 正则表达式中工作 checker/debugger

你的错误不是在 regex 语法中,虽然 ?* 之后是多余的,但在 C++ 字符串常量文字中:反斜杠字符应该用反斜杠:

#include <boost/regex.hpp>
#include <iostream>
#include <string>

std::string response("XsrfToken.setToken('ABC')");
boost::regex expression("XsrfToken.setToken\('(.*?)'\)");

int main() {

    boost::smatch results;

    if (boost::regex_search(response, results, expression)) {
        std::cout << results[0] << " TOKEN" << std::endl;
    }
}