gpt4 book ai didi

c++ - 如何用 1 个变量替换正则表达式字符串?

转载 作者:太空宇宙 更新时间:2023-11-04 14:13:24 28 4
gpt4 key购买 nike

我正在研究类似于 C++ 模板引擎的东西。使用标准 <regex>库,如何在具有以下模式的字符串中找到多个匹配项:AB $1 BA (不使用 AB 上的转义字符,es。\AB,但使用 AB 之前的任何其他字符)并将匹配项存储在字符串 vector 中?

例如:

string main_string = "Something cool \AB blabla BA, something else AB first BA, something AB second BA more.";
vector<string> matches;
// algorithm here

匹配应包含 firstsecond .

最佳答案

#include <string>
#include <regex>
#include <vector>
#include <iostream>

int main() {
std::string target_text(
"Something cool \\AB blabla BA, something else AB first BA, "
"something AB second BA more.");
std::vector<std::string> result;
typedef std::string::const_iterator iter_type;
std::regex rgx("[^\\\\]AB(.*?)BA");
std::regex_iterator<iter_type> iter(target_text.begin(),
target_text.end(),
rgx);
std::regex_iterator<iter_type> end;
for ( ; iter != end; ++iter)
result.push_back((*iter)[1].str());
for (int i = 0; i < result.size(); ++i)
std::cout << result[i] << '\n';
return 0;
}

正则表达式不太正确;它不会匹配 "ABcBA",因为它坚持在模式的其余部分之前紧接一个字符(不是反斜杠)。这可以用否定断言代替字符组来解决,但我尝试的简单测试没有用,我现在不想花更多时间在上面。

关于c++ - 如何用 1 个变量替换正则表达式字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13102782/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com