正则表达式如何在 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;
}
}
我目前正在使用 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;
}
}