我是一名可以帮助翻译文本的助手。
我有一个字符串 'CCCC',想要在其中匹配重叠的 'CCC'。
我的代码:
...
std::string input_seq = "CCCC";
std::regex re("CCC");
std::sregex_iterator next(input_seq.begin(), input_seq.end(), re);
std::sregex_iterator end;
while (next != end) {
std::smatch match = *next;
std::cout << match.str() << "\t" << "\t" << match.position() << "\t" << "\n";
next++;
}
...
然而,这只返回了:
CCC 0
同时跳过了我所需的CCC 1
解决方案。
我了解到非贪婪匹配的'?',但是我无法使其正常工作。
.
可能会解决问题:std::regex re("(?=(CCC)).");
。如果必须匹配换行符,则应将.
替换为[\s\S]
。 - Wiktor Stribiżew"(?=(CCC))."
你可能需要编辑答案。 - Richard Hodges