如何在C++的正则表达式中使用变量

How to use a variable in regex in C++?

本文关键字:变量 正则表达式 C++      更新时间:2023-10-16

有一个字符串(来自stdin的输入),比如inputString

我想做的是匹配一些包含此变量字符串一部分的正则表达式。例如,如果输入字符串stackoverflow,我想匹配stackoverflo[a-z]或说stack[a-z]overflow(即前 5 个字符、一些单个字符和其余输入)。

我该怎么做?我想,可能我需要在运行时生成另一个字符串,但不确定我将如何做到这一点。

你只使用普通的std::string inserterasesubstr,连接。

std::string regex_string = inputString.substr(0, inputString.size() - 1) + "[a-z]";
...
string regex_string = inputString;
regex_string.insert(5, "[a-z]");

您必须决定如何计算要复制,擦除或插入的索引。

一旦你有了你想要的regex_string,只需将其提供给正则表达式库函数......

std::regex re(regex_string);
std::smatch match;
if (std::regex_search(my_string_to_match_against, match, re)) ...