如何在 C++ 的正则表达式中使用变量? [关闭]

Posted

技术标签:

【中文标题】如何在 C++ 的正则表达式中使用变量? [关闭]【英文标题】:How to use a variable in regex in C++? [closed] 【发布时间】:2016-04-27 05:26:15 【问题描述】:

有一个字符串(从stdin输入),比如inputString

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

我该怎么做?我想,可能我需要在运行时生成另一个字符串,但不知道该怎么做。

【问题讨论】:

你想要什么究竟?您想构建一个正则表达式来匹配inputString任何 部分还是特定的部分? 看看std::stringstd::stringstream 为您提供的子字符串提取和字符串创建功能。如果遇到困难,请返回 SO。 @hyst329 字符串的特定部分 所以你真的只想知道如何使用字符串? @StoryTeller 好的,我去看看 【参考方案1】:

你只需使用普通的std::stringinserterasesubstr、连接......

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

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

获得所需的regex_string 后,只需将其提供给regex 库函数...

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

【讨论】:

以上是关于如何在 C++ 的正则表达式中使用变量? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中对多个正则表达式使用正则表达式“分组”?

如何使用 perl 从变量中删除特殊字符 [关闭]

如何在 linux shell 脚本中使用正则表达式搜索文件 [关闭]

在 C++ 中使用正则表达式检查字符串

如何使用正则表达式从 C++ 字符串中提取字符串

如何在正则表达式中使用变量?